home *** CD-ROM | disk | FTP | other *** search
/ HPAVC / HPAVC CD-ROM.iso / pc / INTER53D.ZIP / INTERRUP.N < prev    next >
Encoding:
Text File  |  1997-01-12  |  321.9 KB  |  9,257 lines

  1. Interrupt List, part 14 of 16
  2. Copyright (c) 1989,1990,1991,1992,1993,1994,1995,1996,1997 Ralf Brown
  3. --------*-63---------------------------------
  4. INT 63 - reserved for user interrupt
  5. --------d-63---------------------------------
  6. INT 63 - Adaptec and OMTI controllers - DRIVE 0 DATA
  7. Desc:    this vector stores the last four bytes of the parameter table for
  8.       hard disk 0
  9. SeeAlso: INT 60"Adaptec",INT 61"Adaptec",INT 62"Adaptec",INT 64"Adaptec"
  10. --------b-63---------------------------------
  11. INT 63 - TI Professional PC - OPTION ROM DATA AREA POINTER (NOT A VECTOR!)
  12. Desc:    the low word of this vector contains the segment of the RAM data area
  13.       to be used by the expansion ROM at F400h:4000h, and the high word
  14.       contains the length of the data area; this segment and size are
  15.       both set to 0000h if no ROM is installed at F400h:4000h
  16. SeeAlso: INT 60"TI Professional PC",INT 62"TI Professional"
  17. SeeAlso: INT 64"TI Professional PC"
  18. ----------63---------------------------------
  19. INT 63 - Oracle SQL Protected Mode Executive - ???
  20. --------d-63---------------------------------
  21. INT 63 - 4+Power FLOPPY CONTROLLER - ORIGINAL INT 13/40
  22. Desc:    the "4+Power" quad floppy controller BIOS hooks INT 13 (or INT 40 if
  23.       INT 13 has been moved there) and places the old value here
  24. ----------63---------------------------------
  25. INT 63 - Kofax KF9X00 image manipulation card interface
  26. --------Q-63---------------------------------
  27. INT 63 - DESQview/X - SOCKET API
  28. Notes:    parameters are passed by patching (!) data field immediately following
  29.       the entry point, as detailed below (see #2764); the preferred
  30.       method for calling the socket API is via INT 15/AX=DE2Eh
  31.     the installation check consists of testing for the string "dvxunix"
  32.       (yes, lowercase) at offset 9 from the interrupt handler start
  33.       (see #2764)
  34. SeeAlso: INT 15/AX=DE2Eh,INT BE"DESQview"
  35. Index:    installation check;DESQview/X socket interface
  36.  
  37. Format of DESQview/X socket interrupt handler entry:
  38. Offset    Size    Description    (Table 2764)
  39.  00h  3 BYTEs    near jump or short jump + NOP to actual interrupt handler
  40.  03h    WORD    offset from following pointer for initial top of local stack
  41.  05h    DWORD    pointer to argument/stack block (see INT 15/AX=DE2Eh)
  42.  09h  7 BYTEs    signature "dvxunix"
  43. --------b-6300-------------------------------
  44. INT 63 - HP 100LX - MAP HIGH MEMORY
  45.     AH = 00h
  46.     AL = physical page (00h seg C000, 01h seg C400h, ...)
  47.     BX = zero-based logical page
  48.     CX = page number
  49.     DX = device ID (00h system ROM, 05h plugin, etc.)
  50. Return: ???
  51. SeeAlso: AH=01h
  52. --------N-6300-------------------------------
  53. INT 63 - BW-TCP - TCPIP.SYS - SET IP ADDRESS???
  54.     AH = 00h
  55.     DS:BX -> DWORD containing IP address (big-endian)
  56. Return: CF clear if successful
  57.     CF set on error
  58.     AX destroyed
  59. Range:    INT 4D to INT FC, selected by configuration
  60. Note:    the Beame&Whiteside TCP/IP protocol stack uses two consecutive
  61.       interrupts (62h and 63h by default); the BW-NFS client uses a third
  62.       consecutive interrupt (64h by default) if it is loaded
  63. SeeAlso: AH=01h"BW-TCP",AH=02h"BW-TCP"
  64. --------b-6301-------------------------------
  65. INT 63 - HP 100LX - SAVE/RESTORE MEMORY MAP
  66.     AH = 01h
  67.     AL = function (00h save, 01h restore)
  68.     ???
  69. Return: ???
  70. --------N-6301-------------------------------
  71. INT 63 - BW-TCP - TCPIP.SYS - ???
  72.     AH = 01h
  73.     ES:BX -> ???
  74.     ???
  75. Return: ???
  76. Range:    INT 4D to INT FC, selected by configuration
  77. Note:    the Beame&Whiteside TCP/IP protocol stack uses two consecutive
  78.       interrupts (62h and 63h by default); the BW-NFS client uses a third
  79.       consecutive interrupt (64h by default) if it is loaded
  80. SeeAlso: AH=00h"BW-TCP",AH=02h"BW-TCP"
  81. --------N-6302-------------------------------
  82. INT 63 - BW-TCP - TCPIP.SYS - ???
  83.     AH = 02h
  84.     ???
  85. Return: ???
  86. SeeAlso: AH=00h"BW-TCP",AH=01h"BW-TCP"
  87. --------N-6303-------------------------------
  88. INT 63 - BW-TCP - TCPIP.SYS - GET IP ADDRESS
  89.     AH = 03h
  90.     DS:SI -> buffer for DWORD IP address (big-endian)
  91. Return: AX destroyed
  92.     CF clear if successful
  93.     CF set on error
  94. Note:    this call may use ARP or RARP to determine the address
  95. --------N-6304-------------------------------
  96. INT 63 - BW-TCP - TCPIP.SYS - ???
  97.     AH = 04h
  98.     ???
  99. Return: ???
  100. --------N-6305-------------------------------
  101. INT 63 - BW-TCP - TCPIP.SYS - ???
  102.     AH = 05h
  103.     DS:BX -> ???
  104.     ES:SI -> ???
  105. Return: ???
  106. Range:    INT 4D to INT FC, selected by configuration
  107. --------N-6306-------------------------------
  108. INT 63 - BW-TCP - TCPIP.SYS - ???
  109.     AH = 06h
  110.     ???
  111. Return: ???
  112. --------N-6307-------------------------------
  113. INT 63 - BW-TCP - TCPIP.SYS - ???
  114.     AH = 07h
  115.     ???
  116. Return: ???
  117. --------N-6308-------------------------------
  118. INT 63 - BW-TCP - TCPIP.SYS - SET DEFAULT ??? HANDLER
  119.     AH = 08h
  120.     DS:BX -> DWORD containing IP address
  121. Return: CF clear if successful
  122.     CF set on error
  123.     ???
  124. --------N-6309-------------------------------
  125. INT 63 - BW-TCP - TCPIP.SYS - INSTALL ??? HANDLERS
  126.     AH = 09h
  127.     BL = handler type
  128.     ES:SI -> FAR handler of specified type
  129. Return: ???
  130. SeeAlso: AH=0Ah,AH=0Dh
  131. --------N-630A-------------------------------
  132. INT 63 - BW-TCP - TCPIP.SYS - DELETE ??? HANDLERS
  133.     AH = 0Ah
  134.     BL = handler type
  135. Return: CF clear if successful
  136.     CF set on error (no handler of specified type installed)
  137. SeeAlso: AH=09h
  138. --------N-630B-------------------------------
  139. INT 63 - BW-TCP - TCPIP.SYS - ???
  140.     AH = 0Bh
  141.     AL = ???
  142.     DL = ???
  143.     DS:BX -> ???
  144.     ES:SI -> ???
  145. Return: ???
  146. --------N-630C-------------------------------
  147. INT 63 - BW-TCP - TCPIP.SYS - ???
  148.     AH = 0Ch
  149.     ???
  150. Return: ???
  151. Range:    INT 4D to INT FC, selected by configuration
  152. --------N-630D-------------------------------
  153. INT 63 - BW-TCP - TCPIP.SYS - INSTALL DEFAULT ??? HANDLER
  154.     AH = 0Dh
  155.     ???
  156. Return: ???
  157. Note:    if not already installed, installs a type 06h handler with AH=09h
  158. SeeAlso: AH=09h
  159. --------N-630E-------------------------------
  160. INT 63 - BW-TCP - TCPIP.SYS - CLOSE NETWORK DESCRIPTOR
  161.     AH = 0Eh
  162.     ???
  163. Return: ???
  164. SeeAlso: INT 61/AH=08h"PC/TCP",INT 61/AH=09h"PC/TCP",INT 61/AH=18h
  165. --------N-630F-------------------------------
  166. INT 63 - BW-TCP - TCPIP.SYS - ???
  167.     AH = 0Fh
  168.     AL = ???
  169.     SI = ???
  170.     DS:DI -> ???
  171.     ???
  172. Return: ???
  173. Range:    INT 4D to INT FC, selected by configuration
  174. --------N-6310-------------------------------
  175. INT 63 - BW-TCP - TCPIP.SYS - ???
  176.     AH = 10h
  177.     DS:DI -> ???
  178.     ???
  179. Return: ???
  180. --------N-6311-------------------------------
  181. INT 63 - BW-TCP - TCPIP.SYS - ???
  182.     AH = 11h
  183.     ???
  184. Return: ???
  185. --------N-6312-------------------------------
  186. INT 63 - BW-TCP - TCPIP.SYS - LISTEN FOR INCOMING CONNECTIONS
  187.     AH = 12h
  188.     DS:SI -> ???
  189.     ES:BP -> ???
  190. Return: ???
  191. SeeAlso: AH=14h,INT 61/AH=23h
  192. --------N-6313-------------------------------
  193. INT 63 - BW-TCP - TCPIP.SYS - NOP
  194.     AH = 13h
  195. Return: nothing
  196. Range:    INT 4D to INT FC, selected by configuration
  197. --------N-6314-------------------------------
  198. INT 63 - BW-TCP - TCPIP.SYS - OPEN NETWORK CONNECTION
  199.     AH = 14h
  200.     BX = network descriptor???
  201.     DS:SI -> ???
  202.     ES:BP -> ???
  203. Return: ???
  204. SeeAlso: AH=12h,AH=16h,AH=19h,INT 61/AH=13h"PC/TCP",INT 62/AH=13h"ETHDEV"
  205. --------N-6315-------------------------------
  206. INT 63 - BW-TCP - TCPIP.SYS - ???
  207.     AH = 15h
  208.     DS:DI -> ???
  209.     ???
  210. Return: ???
  211. Range:    INT 4D to INT FC, selected by configuration
  212. --------N-6316-------------------------------
  213. INT 63 - BW-TCP - TCPIP.SYS - RESET NETWORK CONNECTION
  214.     AH = 16h
  215.     DS:DI -> ???
  216. Return: ???
  217. Note:    calls AH=17h after preprocessing
  218. SeeAlso: AH=17h,INT 61/AH=19h"PC/TCP"
  219. --------N-6317-------------------------------
  220. INT 63 - BW-TCP - TCPIP.SYS - ???
  221.     AH = 17h
  222.     DS:DI -> ???
  223.     ???
  224. Return: ???
  225. Range:    INT 4D to INT FC, selected by configuration
  226. SeeAlso: AH=18h
  227. --------N-6318-------------------------------
  228. INT 63 - BW-TCP - TCPIP.SYS - ???
  229.     AH = 18h
  230.     DS:DI -> ???
  231.     ???
  232. Return: ???
  233. Note:    same as AH=17h, except performed with interrupts disabled
  234. SeeAlso: AH=17h
  235. --------N-6319-------------------------------
  236. INT 63 - BW-TCP - TCPIP.SYS - WRITE TO THE NETWORK
  237.     AH = 19h
  238.     DS:DI -> ???
  239.     ???
  240. Return: BX = number of bytes NOT written
  241.     ???
  242. Range:    INT 4D to INT FC, selected by configuration
  243. Note:    calls AH=17h with interrupts disabled and ??? set to 01h
  244. SeeAlso: AH=14h,AH=1Ah,AH=1Bh,INT 61/AH=1Ah"PC/TCP"
  245. --------N-631A-------------------------------
  246. INT 63 - BW-TCP - TCPIP.SYS - READ FROM THE NETWORK
  247.     AH = 1Ah
  248.     CX = maximum number of bytes to read
  249.     ES:BP -> ???
  250.     ???
  251. Return: CX = number of bytes actually read
  252.     ???
  253. SeeAlso: AH=12h,AH=14h,AH=19h,INT 61/AH=1Bh"PC/TCP"
  254. --------N-631B-------------------------------
  255. INT 63 - BW-TCP - TCPIP.SYS - ???
  256.     AH = 1Bh
  257.     CX = ???
  258.     ES:BP -> ???
  259. Return: DX = ???
  260.     ???
  261. Range:    INT 4D to INT FC, selected by configuration
  262. --------N-631C-------------------------------
  263. INT 63 - BW-TCP - TCPIP.SYS - ???
  264.     AH = 1Ch
  265.     DS:DI -> ???
  266.     ???
  267. Return: ???
  268. Note:    calls AH=17h with ???
  269. SeeAlso: AH=17h
  270. --------N-631D-------------------------------
  271. INT 63 - BW-TCP - TCPIP.SYS - ???
  272.     AH = 1Dh
  273.     ???
  274. Return: ???
  275. Range:    INT 4D to INT FC, selected by configuration
  276. --------N-631E-------------------------------
  277. INT 63 - BW-TCP - TCPIP.SYS - ???
  278.     AH = 1Eh
  279.     DS:BX -> DWORD containing IP address (big-endian)
  280.     ???
  281. Return: CF clear if successful
  282.     CF set on error
  283.     ???
  284. --------N-631F-------------------------------
  285. INT 63 - BW-TCP - TCPIP.SYS - SET SOCKET ??? HANDLER
  286.     AH = 1Fh
  287.     BX = socket number
  288.     ES:SI -> FAR function for ???
  289. Return: CF clear if successful
  290.     CF set on error (out of slots)
  291. SeeAlso: AH=20h
  292. --------N-6320-------------------------------
  293. INT 63 - BW-TCP - TCPIP.SYS - REMOVE SOCKET ??? HANDLER
  294.     AH = 20h
  295.     BX = socket number
  296. Return: CF clear if successful
  297.     CF set on error (not set)
  298. Range:    INT 4D to INT FC, selected by configuration
  299. SeeAlso: AH=1Fh
  300. --------N-6321-------------------------------
  301. INT 63 - BW-TCP - TCPIP.SYS - ???
  302.     AH = 21h
  303.     ES:SI -> ???
  304. Return: ???
  305. SeeAlso: INT 61/AH=1Ch"PC/TCP"
  306. --------N-6322-------------------------------
  307. INT 63 - BW-TCP - TCPIP.SYS - REMOVE ??? HANDLER
  308.     AH = 22h
  309. Return: CF clear
  310. Range:    INT 4D to INT FC, selected by configuration
  311. Note:    decrements a counter if not already zero, and calls AH=0Ah with BL=11h
  312.       if the counter reaches zero
  313. --------N-6323-------------------------------
  314. INT 63 - BW-TCP - TCPIP.SYS - ???
  315.     AH = 23h
  316.     DS:BX -> ???
  317.     ES:SI -> 6-byte buffer for ???
  318. Return: CF clear if successful
  319.     CF set on error
  320. --------N-6324-------------------------------
  321. INT 63 - BW-TCP - TCPIP.SYS - GET SOCKET
  322.     AH = 24h
  323. Return: AX = socket number (0400h-FFFFh)
  324. Range:    INT 4D to INT FC, selected by configuration
  325. Note:    the Beame&Whiteside TCP/IP protocol stack uses two consecutive
  326.       interrupts (62h and 63h by default); the BW-NFS client uses a third
  327.       consecutive interrupt (64h by default) if it is loaded
  328. SeeAlso: AH=12h,AH=14h,INT 62/AH=12h"ETHDEV",INT 64/AH=01h"BW-NFS"
  329. --------N-6325-------------------------------
  330. INT 63 - BW-TCP - TCPIP.SYS - GET INTERNET ADDRESS
  331.     AH = 25h
  332. Return: CL:CH:DL:DH = caller's Internet address
  333. SeeAlso: AH=03h,AH=26h,INT 61/AH=05h"PC/TCP"
  334. --------N-6326-------------------------------
  335. INT 63 - BW-TCP - TCPIP.SYS - SET INTERNET ADDRESS???
  336.     AH = 26h
  337.     CL:CH:DL:DH = Internet address
  338. Return: nothing
  339. Range:    INT 4D to INT FC, selected by configuration
  340. Note:    this function sets a different variable than AH=25h returns
  341. SeeAlso: AH=03h,AH=25h
  342. --------N-6327-------------------------------
  343. INT 63 - BW-TCP - TCPIP.SYS - SET ???
  344.     AH = 27h
  345.     BX = ???
  346.     ES:SI -> ???
  347. Return: ???
  348. --------N-6328-------------------------------
  349. INT 63 - BW-TCP - TCPIP.SYS - ???
  350.     AH = 28h
  351.     ???
  352. Return: ???
  353. --------N-6329-------------------------------
  354. INT 63 - BW-TCP - TCPIP.SYS - ???
  355.     AH = 29h
  356.     ???
  357. Return: ???
  358. Range:    INT 4D to INT FC, selected by configuration
  359. Note:    the Beame&Whiteside TCP/IP protocol stack uses two consecutive
  360.       interrupts (62h and 63h by default); the BW-NFS client uses a third
  361.       consecutive interrupt (64h by default) if it is loaded
  362. --------*-64---------------------------------
  363. INT 64 - reserved for user interrupt
  364. --------d-64---------------------------------
  365. INT 64 - Adaptec controllers - DRIVE 1 DATA
  366. Desc:    this vector stores the first four bytes of the parameter table for
  367.       hard disk 1
  368. Notes:    these vectors are used by the following Adaptec controllers:
  369.         ACB 2370 A/B/C, ACB 2372 A/B/C, ACB 2333 A/B, 2322B-8, 2322B-16
  370.     these vectors are NOT used by the following Adaptec controllers:
  371.         ACB 2310, ACB 2312, ACB 2320D, ACB 2322D
  372. SeeAlso: INT 60"Adaptec",INT 65"Adaptec",INT 66"Adaptec",INT 67"Adaptec"
  373. --------b-64---------------------------------
  374. INT 64 - TI Professional PC - OPTION ROM DATA AREA POINTER (NOT A VECTOR!)
  375. Desc:    the low word of this vector contains the segment of the RAM data area
  376.       to be used by the expansion ROM at F400h:6000h, and the high word
  377.       contains the length of the data area; this segment and size are
  378.       both set to 0000h if no ROM is installed at F400h:6000h
  379. SeeAlso: INT 60"TI Professional PC",INT 63"TI Professional"
  380. SeeAlso: INT 65"TI Professional PC"
  381. ----------64---------------------------------
  382. INT 64 - Oracle SQL Protected Mode Executive - ???
  383. --------N-64---------------------------------
  384. INT 64 - Novell NetWare to v2.0a - LOW-LEVEL API
  385. Note:    equivalent to INT 7A for NetWare versions through 2.0a only; later
  386.       versions do not use this interrupt for IPX/SPX access, instead
  387.       getting an entry point from INT 2F/AX=7A00h
  388. SeeAlso: INT 2F/AX=7A00h,INT 7A"LOW-LEVEL API"
  389. --------h-64---------------------------------
  390. INT 64 - Data General DG10 - MicroECLIPSE COPROCESSOR INTERFACE
  391. SeeAlso: INT 65"DG10",INT 66"DG10"
  392. --------r-64---------------------------------
  393. INT 64 - Extended Batch Language v3.14+
  394.     AH = function
  395.         00h to 5Fh chained to previous handler
  396.         60h to 6Ch reserved, return immediately
  397.         80h to FFh chained to previous handler
  398.         6Dh (v4.01+) insert tone in queue
  399.         AL = ???
  400.         CX = frequency in Hertz
  401.         DL = duration in clock ticks
  402.         Return: AL = 00h if note stored
  403.                = 01h if no room to store
  404.         6Eh clear ??? counter/flag
  405.         6Fh return counter/flag that AH=6Eh clears
  406.         70h ???
  407.         AL = ???
  408.         71h ???
  409.         AL = ???
  410.         72h ???
  411.         73h insert byte at end of keyboard buffer
  412.         AL = byte to insert
  413.         Return: AL = 00h if byte inserted
  414.                = 01h if no room to store
  415.         74h insert byte at front of keyboard buffer
  416.         AL = byte to insert
  417.         Return: AL = 00h if byte inserted
  418.                = 01h if no room to store
  419.         75h ???
  420.         76h get keyboard "stack" status
  421.         AL = 'K' if kbd read will read physical keyboard
  422.              'S' if it will read EBL internal keyboard buffer
  423.         AH = ???
  424.         77h clear internal keyboard buffer
  425.         78h ???
  426.         AL = ???
  427.         79h ???
  428.         7Ah ???
  429.         AL = ???
  430.         7Bh ???
  431.         AL = ???
  432.         7Ch ???
  433.         AL = ???
  434.         7Dh ???
  435.         AL = ???
  436.         7Eh clear buffer for ???
  437.         7Fh installation check
  438.         Return: CX = version in BCD
  439.             DI = segment of ???
  440.             BX = segment of next program's PSP???
  441. Program: Extended Batch Language is a batch-file enhancer by Seaware
  442. Notes:    the chaining does not check whether the interrupt had been hooked
  443.       before, so if you try to chain when the previous vector was
  444.       0000h:0000h, you'll be in trouble
  445.     functions 72h and 7Ah-7Dh appear to be interfaces to the optional
  446.       floating-point and extended function packages
  447. Index:    installation check;EBL|installation check;Extended Batch Language
  448. --------d-64---------------------------------
  449. INT 64 - Pdisk by Scott Garfinkle - Overwritten for Hard Drive information
  450. Note:    This vector is overwritten by Pdisk to install custom harddrive types.
  451.       It can either destroy 4 vectors and take no memory or TSR and take
  452.       up some memory.
  453. SeeAlso: INT 65"Pdisk"
  454. ----------64---------------------------------
  455. INT 64 - PC-DRAFT - ASYNCHRONOUS DRIVER
  456.     ???
  457. Return: ???
  458. Program: PC-DRAFT is a powerful CAD environment by rhv.
  459. SeeAlso: INT 62"PC-DRAFT",INT 65"PC-DRAFT",INT 66"PC-DRAFT",INT 67"PC-DRAFT"
  460. --------N-6401-------------------------------
  461. INT 64 U - BW-NFS - BWRPC - ???
  462.     AH = 01h
  463.     ES:BX -> ??? (at least 8 bytes)
  464.     ES:BP -> DWORD ???
  465.     ???
  466. Return: CF clear if successful
  467.         ???
  468.     CF set on error
  469.         CX = 0000h
  470. Range:    INT 4E to INT FD, selected by configuration
  471. Notes:    the Beame&Whiteside TCP/IP protocol stack uses two consecutive
  472.       interrupts (62h and 63h by default); the BW-NFS client uses a third
  473.       consecutive interrupt (64h by default) if it is loaded
  474.     the BWRPC installation check consists of determining the interrupt
  475.       vector assigned to it (two more than the value returned by reading
  476.       the ETHDEV27 device), and testing whether the word immediately
  477.       preceding the interrupt handler is 4257h ('BW')
  478. SeeAlso: INT 62/AH=00h"ETHDEV",INT 63/AH=03h"BW-TCP",INT 63/AH=24h
  479. Index:    installation checks;BWRPC
  480. --------N-6402-------------------------------
  481. INT 64 U - BW-NFS - BWRPC - ???
  482.     AH = 02h
  483.     DS:DI -> ???
  484. Return: ???
  485. Note:    this call is passed directly through to INT 62/AH=07h
  486. SeeAlso: INT 62/AH=07h"ETHDEV"
  487. --------N-6403-------------------------------
  488. INT 64 U - BW-NFS - BWRPC - ADD ???
  489.     AH = 03h
  490.     AL = ???
  491.     BP = ???
  492.     ES:SI -> ???
  493. Return: ???
  494. Note:    this call is passed directly through to INT 62/AH=0Bh
  495. SeeAlso: AH=04h,INT 62/AH=0Bh"ETHDEV"
  496. --------N-6404-------------------------------
  497. INT 64 U - BW-NFS - BWRPC - REMOVE ???
  498.     AH = 04h
  499.     BP = ???
  500. Return: ???
  501. Range:    INT 4E to INT FD, selected by configuration
  502. Note:    this call is passed directly through to INT 62/AH=0Ch
  503. SeeAlso: AH=03h,INT 62/AH=0Ch"ETHDEV"
  504. --------N-6405-------------------------------
  505. INT 64 U - BW-NFS - BWRPC - ???
  506.     AH = 05h
  507.     CX = ???
  508. Return: ???
  509. Note:    this call is passed directly through to INT 62/AH=13h
  510. SeeAlso: INT 62/AH=13h"ETHDEV"
  511. --------N-6406-------------------------------
  512. INT 64 U - BW-NFS - BWRPC - ???
  513.     AH = 06h
  514.     ES:SI -> ???
  515. Return: AL = 00h if CF clear
  516. Range:    INT 4E to INT FD, selected by configuration
  517. Note:    this call is passed directly through to INT 62/AH=14h
  518. SeeAlso: INT 62/AH=14h"ETHDEV"
  519. --------N-6407-------------------------------
  520. INT 64 U - BW-NFS - BWRPC - GET IP ADDRESS
  521.     AH = 07h
  522. Return: CX:DX = IP address
  523. --------N-6410-------------------------------
  524. INT 64 U - BW-NFS - BWRPC - CALL ETHDEV.SYS
  525.     AH = 10h
  526.     AL = ETHDEV function number
  527.     other registers as appropriate for ETHDEV call
  528. Return: as returned by ETHDEV
  529. Note:    this call is passed directly through to INT 62
  530. SeeAlso: INT 62/AH=00h"ETHDEV"
  531. --------N-6411-------------------------------
  532. INT 64 U - BW-NFS - BWRPC - NOP???
  533.     AH = 11h
  534. Return: CF clear
  535. Range:    INT 4E to INT FD, selected by configuration
  536. --------N-64FE-------------------------------
  537. INT 64 - BW-NFS - BWRPC - MAP EMS PAGE FRAME
  538.     AH = FEh
  539.     AL = direction
  540.         00h map in driver's memory block
  541.         01h map out driver's memory block
  542. Return: CF clear if successful
  543.     CF set on error
  544.         AL = error code
  545. Range:    INT 4E to INT FD, selected by configuration
  546. Note:    this call is passed through directly to ETHDEV.SYS (see INT 62/AH=FEh)
  547. SeeAlso: INT 21/AH=3Fh"BW-TCP",INT 62/AH=FEh,INT 63/AH=03h"BW-TCP"
  548. SeeAlso: INT 63/AH=24h
  549. --------*-65---------------------------------
  550. INT 65 - reserved for user interrupt
  551. --------d-65---------------------------------
  552. INT 65 - Adaptec controllers - DRIVE 1 DATA
  553. Desc:    this vector stores the second four bytes of the parameter table for
  554.       hard disk 1
  555. SeeAlso: INT 64"Adaptec",INT 66"Adaptec",INT 67"Adaptec",#0629
  556. --------b-65---------------------------------
  557. INT 65 - TI Professional PC - OPTION ROM DATA AREA POINTER (NOT A VECTOR!)
  558. Desc:    the low word of this vector contains the segment of the RAM data area
  559.       to be used by the expansion ROM at F400h:8000h, and the high word
  560.       contains the length of the data area; this segment and size are
  561.       both set to 0000h if no ROM is installed at F400h:8000h
  562. SeeAlso: INT 60"TI Professional PC",INT 64"TI Professional"
  563. SeeAlso: INT 66"TI Professional PC"
  564. --------h-65---------------------------------
  565. INT 65 - Data General DG10 - MicroECLIPSE COPROCESSOR INTERFACE
  566. SeeAlso: INT 64"DG10",INT 66"DG10"
  567. --------N-65---------------------------------
  568. INT 65 - FTP Software NDIS-Packet Driver adapter - POST PROCESSING INTERRUPT
  569. --------U-65---------------------------------
  570. INT 65 - SD.COM v6.2
  571. Desc:    The unregistered version of SD62.COM uses the low byte of this vector
  572.       to count the number of invocations, displaying a registration
  573.       reminder each time after the 20th use.
  574. --------d-65---------------------------------
  575. INT 65 - Pdisk by Scott Garfinkle - Overwritten for Hard Drive information
  576. SeeAlso: INT 64"Pdisk",INT 66"Pdisk"
  577. ----------65---------------------------------
  578. INT 65 - PC-DRAFT - SECONDARY DISPLAY DRIVER
  579.     ???
  580. Return: ???
  581. Program: PC-DRAFT is a powerful CAD environment by rhv.
  582. SeeAlso: INT 62"PC-DRAFT",INT 64"PC-DRAFT",INT 66"PC-DRAFT",INT 67"PC-DRAFT"
  583. --------s-65---------------------------------
  584. INT 65 - Ad Lib SOUND.COM - INTERFACE
  585.     SI = function number (also see separate entries below)
  586.         0000h Init
  587.         0002h RelTimeStart
  588.         0003h SetState
  589.         0004h GetState
  590.         0005h Flush
  591.         0006h SetMode
  592.         0007h GetMode
  593.         0008h SetRelVolume
  594.         0009h SetTempo
  595.         000Ah SetTranspose
  596.         000Bh GetTranspose
  597.         000Ch SetActVoice
  598.         000Dh GetActVoice
  599.         000Eh PlayNoteDel
  600.         000Fh PlayNote
  601.         0010h SetTimbre
  602.         0011h SetPitch
  603.         0012h SetTickBeat
  604.         0013h NoteOn
  605.         0014h NoteOff
  606.         0015h Timbre
  607.         0016h SetPitchBend
  608.         0017h WaveForm
  609.     ES:BX -> arguments
  610. Note:    the installation check consists of checking for the signature block
  611.       immediately preceding the interrupt handler (see #2765)
  612. SeeAlso: SI=8000h
  613. Index:    installation check;Ad Lib SOUND.COM
  614.  
  615. Format of AdLib signature block:
  616. Offset    Size    Description    (Table 2765)
  617.  00h    WORD    version number
  618.  02h 19 BYTEs    "SOUND-DRIVER-AD-LIB"
  619.  15h    BYTE    01h
  620.  16h    BYTE    01h
  621.  17h    BYTE    00h
  622. --------N-65----DX4147-----------------------
  623. INT 65 U - NetSoft DOS-NET v1.20+ - ??? API
  624.     DX = 4147h
  625.     BH = 01h
  626.     BL = function number (00h-2Ah)
  627.     ???
  628. Return: CF clear if successful
  629.         AX = ???
  630.     CF set on error
  631.         AX = error code (0001h=invalid function/subfunction)
  632. Range:    INT ?? to INT ??, selected by configuration option; actual interrupt
  633.       number and function number may be retrieved via INT 2A/AX=4147h
  634. Note:    this API is supported by CLIENT.COM, SERVER.COM, DOSNET.COM, and
  635.       ROUTER.COM
  636. SeeAlso: DX=4147h"INSTALLATION",INT 2A/AX=4147h
  637. --------N-65----DX4147-----------------------
  638. INT 65 U - NetSoft DOS-NET v1.20+ - ??? API
  639.     DX = 4147h
  640.     BH = 02h
  641.     BL = function number (00h-05h)
  642.     ???
  643. Return: CF clear if successful
  644.         AX = ???
  645.     CF set on error
  646.         AX = error code (0001h=invalid function/subfunction)
  647. Range:    INT ?? to INT ??, selected by configuration option; actual interrupt
  648.       number and function number may be retrieved via INT 2A/AX=4147h
  649. Note:    this API is supported by CLIENT.COM, SERVER.COM, DOSNET.COM, and
  650.       ROUTER.COM
  651. SeeAlso: DX=4147h"INSTALLATION",INT 2A/AX=4147h
  652. --------N-65----DX4147-----------------------
  653. INT 65 U - NetSoft DOS-NET v1.20+ - ??? API
  654.     DX = 4147h
  655.     BH = 03h
  656.     BL = function number (00h-03h) (00h-04h for ROUTER.COM)
  657.     ???
  658. Return: CF clear if successful
  659.         AX = ???
  660.     CF set on error
  661.         AX = error code
  662. Range:    INT ?? to INT ??, selected by configuration option; actual interrupt
  663.       number and function number may be retrieved via INT 2A/AX=4147h
  664. Note:    this API is supported by CLIENT.COM, SERVER.COM, DOSNET.COM, and
  665.       ROUTER.COM
  666. SeeAlso: DX=4147h"INSTALLATION",INT 2A/AX=4147h
  667. --------N-65----DX4147-----------------------
  668. INT 65 U - NetSoft DOS-NET v1.20+ - ??? API
  669.     DX = 4147h
  670.     BH = 04h
  671.     BL = function number (00h-07h)
  672.     ???
  673. Return: CF clear if successful
  674.         AX = ???
  675.     CF set on error
  676.         AX = error code
  677. Range:    INT ?? to INT ??, selected by configuration option; actual interrupt
  678.       number and function number may be retrieved via INT 2A/AX=4147h
  679. Note:    this API is supported by CLIENT.COM, SERVER.COM, and DOSNET.COM
  680. SeeAlso: DX=4147h"INSTALLATION",INT 2A/AX=4147h
  681. --------N-65----DX4147-----------------------
  682. INT 65 U - NetSoft DOS-NET v1.20+ - ??? API
  683.     DX = 4147h
  684.     BH = 07h
  685.     BL = function number (00h-08h)
  686.     ???
  687. Return: CF clear if successful
  688.         AX = ???
  689.     CF set on error
  690.         AX = error code (0001h=invalid function/subfunction)
  691. Range:    INT ?? to INT ??, selected by configuration option; actual interrupt
  692.       number and function number may be retrieved via INT 2A/AX=4147h
  693. Note:    this API is supported by CLIENT.COM, SERVER.COM, and DOSNET.COM
  694. SeeAlso: DX=4147h"INSTALLATION",INT 2A/AX=4147h
  695. --------N-65----DX4147-----------------------
  696. INT 65 U - NetSoft DOS-NET v1.20+ - INSTALLATION CHECK???
  697.     DX = 4147h
  698.     BH = 80h
  699. Return: CF set
  700.     AX = 0001h
  701. Range:    INT ?? to INT ??, selected by configuration option; actual interrupt
  702.       number and function number may be retrieved via INT 2A/AX=4147h
  703. Note:    this call is supported by CLIENT.COM, SERVER.COM, and ROUTER.COM
  704. SeeAlso: DX=4147h,INT 2A/AX=4147h
  705. --------N-65----DX4741-----------------------
  706. INT 65 U - NetSoft DOS-NET v1.20+ - SPOOLER - ???
  707.     DX = 4741h
  708.     BH = 01h
  709.     AL = 02h
  710.     BL = function number (0Eh,0Fh)
  711.     AH = subfunction number
  712.     ???
  713. Return: ???
  714. Range:    INT ?? to INT ??, selected by configuration option; actual interrupt
  715.       number may be retrieved via INT 2A/AX=4147h
  716. SeeAlso: DX=4147h"INSTALLATION",INT 2A/AX=4147h
  717. --------N-65----DX4741-----------------------
  718. INT 65 U - NetSoft DOS-NET v1.20+ - PRNREDIR - ???
  719.     DX = 4741h
  720.     BH = 01h
  721.     AL = 03h
  722.     BL = function number (0Eh,0Fh)
  723.     AH = subfunction number
  724.     ???
  725. Return: ???
  726. Range:    INT ?? to INT ??, selected by configuration option; actual interrupt
  727.       number may be retrieved via INT 2A/AX=4147h
  728. SeeAlso: DX=4147h"INSTALLATION",INT 2A/AX=4147h
  729. --------N-65----DX4741-----------------------
  730. INT 65 U - NetSoft DOS-NET v1.20+ - PRNREDIR - ???
  731.     DX = 4741h
  732.     BH = 01h
  733.     AL = 04h
  734.     BL = function number (0Eh,0Fh)
  735.     AH = subfunction number
  736.     ???
  737. Return: ???
  738. Range:    INT ?? to INT ??, selected by configuration option; actual interrupt
  739.       number may be retrieved via INT 2A/AX=4147h
  740. SeeAlso: DX=4147h"INSTALLATION",INT 2A/AX=4147h
  741. --------N-65----DX4741-----------------------
  742. INT 65 U - NetSoft DOS-NET v1.20+ - NETBIOS - ???
  743.     DX = 4741h
  744.     BH = 01h
  745.     AL = 07h
  746.     BL = function number (0Eh,0Fh)
  747.     AH = subfunction number
  748.     ???
  749. Return: ???
  750. Range:    INT ?? to INT ??, selected by configuration option; actual interrupt
  751.       number may be retrieved via INT 2A/AX=4147h
  752. SeeAlso: DX=4147h"INSTALLATION",INT 2A/AX=4147h
  753. --------N-65----DX4741-----------------------
  754. INT 65 U - NetSoft DOS-NET v1.20+ - MACTEST - ???
  755.     DX = 4741h
  756.     BH = 01h
  757.     AL = 08h
  758.     BL = function number (0Eh,0Fh)
  759.     AH = subfunction number
  760.     ???
  761. Return: ???
  762. Range:    INT ?? to INT ??, selected by configuration option; actual interrupt
  763.       number may be retrieved via INT 2A/AX=4147h
  764. SeeAlso: DX=4147h"INSTALLATION",INT 2A/AX=4147h
  765. --------N-65----DX4741-----------------------
  766. INT 65 U - NetSoft DOS-NET v1.20+ - Physical Layer - ???
  767.     DX = 4741h
  768.     BH = 02h
  769.     BL = function number (01h-04h)
  770.     ???
  771. Return: ???
  772.     ---function 02h---
  773.     DS:SI -> ??? data area
  774. Range:    INT ?? to INT ??, selected by configuration option; actual interrupt
  775.       number may be retrieved via INT 2A/AX=4147h
  776. Note:    this API is supported by PARALLEL.COM, SERIAL.COM, ARCNET.COM,
  777.       ETHERNET.COM, NDIS.COM, ODI.COM, SMC.COM, and FTP.COM
  778. SeeAlso: DX=4147h"INSTALLATION",INT 2A/AX=4147h
  779. --------N-65----DX4741-----------------------
  780. INT 65 U - NetSoft DOS-NET v1.20+ - SPOOLER.COM - ???
  781.     DX = 4741h
  782.     BH = 05h
  783.     BL = function number (00h,01h)
  784. Return: CF clear
  785.     AL = status code (00h=successful)
  786. Range:    INT ?? to INT ??, selected by configuration option; actual interrupt
  787.       number may be retrieved via INT 2A/AX=4147h
  788. SeeAlso: DX=4147h"INSTALLATION",INT 2A/AX=4147h
  789. --------N-65----DX4741-----------------------
  790. INT 65 U - NetSoft DOS-NET v1.20+ - PRNREDIR.COM - ???
  791.     DX = 4741h
  792.     BH = 06h
  793.     BL = function number (00h-04h)
  794.     ???
  795. Return: ???
  796. Range:    INT ?? to INT ??, selected by configuration option; actual interrupt
  797.       number may be retrieved via INT 2A/AX=4147h
  798. SeeAlso: DX=4147h"INSTALLATION",INT 2A/AX=4147h
  799. --------N-65----DX4741-----------------------
  800. INT 65 U - NetSoft DOS-NET v1.20+ - COMREDIR.COM - ???
  801.     DX = 4741h
  802.     BH = 08h
  803.     BL = function number (00h-01h)
  804.     ???
  805. Return: ???
  806. Range:    INT ?? to INT ??, selected by configuration option; actual interrupt
  807.       number may be retrieved via INT 2A/AX=4147h
  808. SeeAlso: DX=4147h"INSTALLATION",INT 2A/AX=4147h
  809. --------N-65----DX4741-----------------------
  810. INT 65 U - NetSoft DOS-NET v1.20+ - FTP.COM - ???
  811.     DX = 4741h
  812.     BX = 8010h
  813.     AL = instance number???
  814. Return: AX = 0008h if AL matches internal variable (call chained otherwise)
  815. Range:    INT ?? to INT ??, selected by configuration option; actual interrupt
  816.       number may be retrieved via INT 2A/AX=4147h
  817. SeeAlso: DX=4147h"INSTALLATION",INT 2A/AX=4147h
  818. --------s-65----SI0000-----------------------
  819. INT 65 - Ad Lib SOUND.COM - INITIALIZE (RESET)
  820.     SI = 0000h
  821. --------s-65----SI0003-----------------------
  822. INT 65 - Ad Lib SOUND.COM - SET STATE
  823.     SI = 0003h
  824.     ES:BX -> WORD new state (0000h disabled, 0001h enabled)
  825. SeeAlso: SI=0004h
  826. --------s-65----SI0004-----------------------
  827. INT 65 - Ad Lib SOUND.COM - GET STATE
  828.     SI = 0004h
  829. Return: AX = status
  830.         0000h all done playing sounds
  831.         else  still playing sounds
  832. SeeAlso: SI=0003h
  833. --------s-65----SI0006-----------------------
  834. INT 65 - Ad Lib SOUND.COM - SET MODE
  835.     SI = 0006h
  836.     ES:BX -> WORD new mode (0000h melodic, 0001h percussive)
  837. SeeAlso: SI=0007h
  838. --------s-65----SI0007-----------------------
  839. INT 65 - Ad Lib SOUND.COM - GET MODE
  840.     SI = 0007h
  841. Return: AX = mode
  842.         0000h melodic
  843.         0001h percussive
  844. SeeAlso: SI=0006h
  845. --------s-65----SI000C-----------------------
  846. INT 65 - Ad Lib SOUND.COM - SET ACTIVE VOICE
  847.     SI = 000Ch
  848.     ES:BX -> WORD voice = 0000h to 0008h
  849. SeeAlso: SI=000Dh
  850. --------s-65----SI000D-----------------------
  851. INT 65 - Ad Lib SOUND.COM - GET ACTIVE VOICE
  852.     SI = 000Dh
  853. Return: AX = voice (0000h to 0008h)
  854. SeeAlso: SI=000Ch
  855. --------s-65----SI8000-----------------------
  856. INT 65 u - Media Vision FM.COM v4.1a+ - GET INTERNAL DATA STRUCTURES
  857.     SI = 8000h
  858. Return: DX:AX -> internal data structures
  859. Program: FM.COM is an Ad Lib SOUND.COM-compatible driver for Media Vision's
  860.       Pro Audio Spectrum sound boards
  861. SeeAlso: SI=8001h
  862. --------s-65----SI8001-----------------------
  863. INT 65 u - Media Vision FM.COM v4.1a+ - GET VOICE COUNT
  864.     SI = 8001h
  865. Return: AX = ???
  866.     DX = number of voices??? (09h or 0Bh)
  867. SeeAlso: SI=8000h
  868. --------s-65----SI8002-----------------------
  869. INT 65 - Media Vision FM.COM v4.1a+ - START BACKGROUND FM SOUNDS
  870.     SI = 8002h
  871. SeeAlso: SI=8003h
  872. --------s-65----SI8003-----------------------
  873. INT 65 - Media Vision FM.COM v4.1a+ - STOP BACKGROUND FM SOUNDS
  874.     SI = 8003h
  875. SeeAlso: SI=8002h
  876. --------s-65----SI8004-----------------------
  877. INT 65 U - Media Vision FM.COM v4.1a+ - GET ???
  878.     SI = 8004h
  879. Return: AX = ??? (0280h)
  880.     DX = ??? (01A0h)
  881. --------s-65----SI8005-----------------------
  882. INT 65 U - Media Vision FM.COM v4.1a+ - ???
  883.     SI = 8005h
  884.     ???
  885. Return: ???
  886. SeeAlso: SI=8000h
  887. --------S-65---------------------------------
  888. INT 65 U - EZRECV v1.0 - API
  889.     AX = function
  890.         0000h ???
  891.         Return: AX = ??? or FFFFh
  892.         0001h ???
  893.         Return: AX = status (0000h or 0001h)
  894.         0002h ???
  895.         Return: AX = status (0000h or 0001h)
  896.         0003h set ??? to 0001h
  897.         Return: AX = 0000h
  898.         0004h ???
  899.         Return: AX = ???
  900. Return: BH = COM port being used
  901.     BL = speed???
  902.     CH = ???
  903.     CL = ???
  904.     DX = ???
  905.     DS = ???
  906.     ES = EZRECV data segment
  907. Program: EZRECV is a background Zmodem file receiver by Express Consulting
  908. --------*-66---------------------------------
  909. INT 66 - reserved for user interrupt
  910. --------d-66---------------------------------
  911. INT 66 - Adaptec controllers - DRIVE 1 DATA
  912. Desc:    this vector stores the third four bytes of the parameter table for
  913.       hard disk 1
  914. SeeAlso: INT 64"Adaptec",INT 65"Adaptec",INT 67"Adaptec"
  915. --------b-66---------------------------------
  916. INT 66 - TI Professional PC - SYSTEM INFORMATION (NOT A VECTOR!)
  917. Desc:    the low word of this vector contains the system memory size in
  918.       paragraphs; the third byte contains the number of outstanding
  919.       interrupt requests, and the fourth byte contains a description
  920.       of the installed drive types (see #2766)
  921. SeeAlso: INT 60"TI Professional PC",INT 67"TI Professional"
  922.  
  923. Bitfields for TI Professional drive type information:
  924. Bit(s)    Description    (Table 2766)
  925.  7    floppy drive D: has 80 tracks
  926.  6    floppy drive D: is double-sided
  927.  5    floppy drive C: has 80 tracks
  928.  4    floppy drive C: is double-sided
  929.  3    floppy drive B: has 80 tracks
  930.  2    floppy drive B: is double-sided
  931.  1    floppy drive A: has 80 tracks
  932.  0    floppy drive A: is double-sided
  933. --------h-66---------------------------------
  934. INT 66 - Data General DG10 - MicroECLIPSE COPROCESSOR INTERFACE
  935. SeeAlso: INT 64"DG10"
  936. --------N-66---------------------------------
  937. INT 66 C - Nanosoft, Inc. TurboNET - NETWORK PROCESSING ???
  938. Program: TurboNET is a NetBIOS-based file redirector and server
  939. Note:    hooked but not used (IRET) by both redirector and server; called from
  940.       server's INT 28 handler
  941. SeeAlso: INT 2F/AX=8100h
  942. --------d-66---------------------------------
  943. INT 66 - Pdisk by Scott Garfinkle - Overwritten for Hard Drive information
  944. SeeAlso: INT 64"Pdisk",INT 67"Pdisk"
  945. --------W-66---------------------------------
  946. INT 66 - Microsoft Windows VITD.386 Virtual Interval Timer
  947. Note:    This Windows 3.x Virtual Device Driver implements a virtual timer
  948.       which will expire and call INT 66.  This timer can be used to
  949.       calculate elapsed execution time etc.
  950. --------K-66---------------------------------
  951. INT 66 - Newkey v5.4 - INSTALLATION VECTOR
  952. Return: immediately (IRET)
  953. Program: Newkey is a shareware keyboard macro program by Frank A. Bell
  954. Range:    INT 60h to INT 67h, selected by scanning for highest unused vector
  955. Note:    the installation check consists of testing for the signature bytes
  956.       FDh FCh FFh FEh at offset 03h in the interrupt handlers segment
  957. BUG:    the code obviously intends to use INT F0-FE, INT 70-77, and INT 68-6F
  958.       before falling back to INT 60-67, but only uses the last of these
  959.       ranges in v5.4
  960. SeeAlso: INT 2F/AX=E300h
  961. Index: installation checks;Newkey|Newkey;installation check
  962. ----------66---------------------------------
  963. INT 66 - PC-DRAFT - TABLET/DIGITIZER DRIVER
  964.     ???
  965. Return: ???
  966. Program: PC-DRAFT is a powerful CAD environment by rhv.
  967. SeeAlso: INT 62"PC-DRAFT",INT 64"PC-DRAFT",INT 65"PC-DRAFT",INT 67"PC-DRAFT"
  968. --------U-66---------------------------------
  969. INT 66 - PC-Magazin - INCA
  970.     details not yet availble
  971. Program: INCA is a utility from PC-Magazin (the German edition of PC Magazine)
  972.       issue 51-52/85.
  973. SeeAlso: INT 61"SWAPx"
  974. --------F-6601-------------------------------
  975. INT 66 - BitFax Scheduler - SET MODE???
  976.     AH = 01h
  977. SeeAlso: AH=02h
  978. --------F-6602-------------------------------
  979. INT 66 - BitFax Scheduler - SET MODE???
  980.     AH = 02h
  981. SeeAlso: AH=01h
  982. --------F-6603-------------------------------
  983. INT 66 - BitFax Scheduler - SCHEDULE FAX TRANSMISSIONS
  984.     AH = 03h
  985.     ???
  986. Return: ???
  987. SeeAlso: AH=05h
  988. --------F-6604-------------------------------
  989. INT 66 - BitFax Scheduler - GET STATUS???
  990.     AH = 04h
  991. Return: AX = ??? (0000h or 0001h)
  992.     DX = BitSched version???  (for versions >= 3.00)
  993.         9796h (ver. 3.00)
  994.         97E6h (ver. 3.02)
  995.         92D0h (ver. 3.04.06)
  996.         9510h (ver. 3.06.02)
  997. SeeAlso: AH=06h,AX=3345h,INT 2F/AX=8000h"FaxBIOS"
  998. --------F-6605-------------------------------
  999. INT 66 - BitFax Scheduler - CONVERT FILE AND SEND FAX
  1000.     AH = 05h
  1001.     BX:CX -> command block (see #2767)
  1002.     ???
  1003. Return: ???
  1004. SeeAlso: AH=03h
  1005.  
  1006. Format of BitFax command block:
  1007. Offset    Size    Description    (Table 2767)
  1008.  00h 18 BYTEs    configuration bytes???
  1009.  12h    BYTEs    ASCIZ temporary file name to place converted fax
  1010.  52h    BYTEs    ASCIZ directory containing BitFax executables
  1011.  92h    BYTEs    ASCIZ telephone number
  1012.  C2h    BYTE    cover page control (00h don't send, 01h do send cover page)
  1013.  C3h 15 BYTEs    configuration bytes???
  1014.  E2h    BYTEs    ASCIZ path of BITFAX.TRA file (containing additional
  1015.           configuration information???)
  1016. 122h    BYTEs    configuration bytes???
  1017. 12Ch    BYTE    00h don't send cover page
  1018.         01h send cover page
  1019. 12Dh  7 BYTEs    configuration bytes???
  1020. 134h    BYTEs    ASCIZ path of file to send
  1021. 174h    BYTEs    more configuration bytes???
  1022.     ???
  1023. --------F-6606-------------------------------
  1024. INT 66 - BitFax Scheduler - SET MODE???
  1025.     AH = 06h
  1026. Return: DX = BitSched version??? (same as AH=04h)
  1027. SeeAlso: AH=04h
  1028. --------s-660688-----------------------------
  1029. INT 66 - IBMSND driver, DIGPAK - PLAY 8-BIT DIGITIZED SOUND
  1030.     AX = 0688h
  1031.     DS:SI -> SNDSTRUC (see #2768)
  1032. Return: ???
  1033. Program: The IBMSND driver is part of John W. Ratcliff's
  1034.        The IBM Digitized Sound Package
  1035.     DIGPAK is a set of digitized sound drivers written by
  1036.       John W. Ratcliff, The Audio Solution, Inc.
  1037. Note:    the installation check consists of looking for a valid signature
  1038.       string six bytes prior to the interrupt handler; this string may
  1039.       be either "KERN" or "MIDI" (in the latter case, call AX=0701h to
  1040.       determine whether IBMSND is installed)
  1041. SeeAlso: AX=068Bh,AX=068Fh,AX=0701h
  1042.  
  1043. Format of IBMSND driver SNDSTRUC:
  1044. Offset    Size    Description    (Table 2768)
  1045.  00h    DWORD    -> audio data
  1046.  04h    WORD    length of audio data in bytes
  1047.  06h    DWORD    -> playback status flag
  1048.  0Ah    WORD    playback frequency
  1049. --------s-660689-----------------------------
  1050. INT 66 - IBMSND driver, DIGPAK - REPORT SOUND DRIVER STATUS
  1051.     AX = 0689h
  1052. Return: AX = status
  1053.         0000h no sound playing
  1054.         0001h sound effect is currently playing
  1055.     ---DIGPAK---
  1056.     BX = version number (v3.1+)
  1057.     DX = looping status
  1058.         0000h no sound looping
  1059.         0001h sound effect is currently looping
  1060. SeeAlso: AX=0688h,AX=068Bh,AX=068Ch
  1061. Index:    version check;DIGPAK
  1062. --------s-66068A-----------------------------
  1063. INT 66 - IBMSND driver, DIGPAK - PREFORMAT SOUND
  1064.     AX = 068Ah
  1065.     DS:SI -> SNDSTRUC (see #2768)
  1066. Desc:    convert audio data into output hardware format
  1067. SeeAlso: AX=068Bh
  1068. --------s-66068B-----------------------------
  1069. INT 66 - IBMSND driver, DIGPAK - PLAY PREFORMATTED SOUND
  1070.     AX = 068Bh
  1071.     DS:SI -> SNDSTRUC (see #2768)
  1072. Return: AX = ???
  1073. SeeAlso: AX=0688h,AX=068Ah,AX=068Fh
  1074. --------s-66068C-----------------------------
  1075. INT 66 - IBMSND driver, DIGPAK - REPORT AUDIO DRIVER CAPABILITIES
  1076.     AX = 068Ch
  1077. Return: AX = capabilities (see #2769)
  1078.     DX = playback rate if fixed-frequency playback
  1079.     ---DIGPAK---
  1080.     BX:CX -> ASCIZ ID string
  1081. SeeAlso: AX=0689h,AX=068Dh
  1082.  
  1083. Bitfields for IBMSND driver capabilities:
  1084. Bit(s)    Description    (Table 2769)
  1085.  0    can play audio in background
  1086.  1    data is massaged for output device
  1087.  2    driver plays at fixed frequency, resampling input data to fit
  1088.  3    driver uses timer interrupt
  1089. ---DIGPAK---
  1090.  4    device supports timer sharing
  1091.  5    supports looped sounds and pending
  1092.  6    supports stereo panning
  1093.  7    supports 8-bit PCM stereo playback
  1094.  8    supports audio recording
  1095.  9    supports DMA bakcfilling
  1096. --------s-66068D-----------------------------
  1097. INT 66 - IBMSND driver, DIGPAK - REPORT CURRENT SAMPLE ADDRESS
  1098.     AX = 068Dh
  1099. Return: AX = current playback address
  1100. Desc:    determine what point in the audio data the playback has reached, for
  1101.       synchronization with video or animation effects
  1102. Notes:    this function applies to background playback only
  1103.     the reported address may be an approximation rather than the exact
  1104.       address
  1105. SeeAlso: AX=068Ch,AX=0691h
  1106. --------s-66068E-----------------------------
  1107. INT 66 - IBMSND driver, DIGPAK - SET CALLBACK ADDRESS
  1108.     AX = 068Eh
  1109.     BX:DX -> callback function
  1110.         0000h:0000h to disable callback
  1111.     DS = value to load into DS when calling the callback function
  1112. Desc:    specify the function to be called when playback of a sound effect is
  1113.       completed
  1114. Note:    the callback function will typically be called during a hardware
  1115.       interrupt, so all the usual precautions should be taken except for
  1116.       preserving registers
  1117. SeeAlso: AX=0691h
  1118. --------s-66068F-----------------------------
  1119. INT 66 - IBMSND driver, DIGPAK - STOP CURRENT SOUND
  1120.     AX = 068Fh
  1121. Desc:    cause any currently-playing sound effect to be terminated
  1122. SeeAlso: AX=0688h,AX=068Bh
  1123. --------s-660690-----------------------------
  1124. INT 66 - IBMSND driver, DIGPAK - "SetAudioHardware" - SET UP HARDWARE INFO
  1125.     AX = 0690h
  1126.     BX = IRQ
  1127.     CX = base address
  1128.     DX = other setup value (device-dependent???)
  1129. --------s-660691-----------------------------
  1130. INT 66 - IBMSND driver, DIGPAK - REPORT CALLBACK ADDRESS
  1131.     AX = 0691h
  1132. Return: AX:DX -> current callback function
  1133.     BX = original caller's DS register
  1134. Program: The IBMSND driver is part of John W. Ratcliff's
  1135.        The IBM Digitized Sound Package
  1136.     DIGPAK is a set of digitized sound drivers written by
  1137.       John W. Ratcliff, The Audio Solution, Inc.
  1138. SeeAlso: AX=068Eh
  1139. --------s-660693-----------------------------
  1140. INT 66 - DIGPAK - SET TIMER DIVISOR RATE
  1141.     AX = 0693h
  1142.     DX = rate
  1143. Program: DIGPAK is a set of digitized sound drivers written by
  1144.       John W. Ratcliff, The Audio Solution, Inc.
  1145. --------s-660694-----------------------------
  1146. INT 66 - DIGPAK - PLAY PREFORMATTED DATA
  1147.     AX = 0694h
  1148.     DS:SI -> Sound Data structure (see #2768)
  1149. Return: AX = status???
  1150. --------s-660695-----------------------------
  1151. INT 66 - DIGPAK - POST AUDIO PENDING
  1152.     AX = 0695h
  1153.     DS:SI -> Sound Data structure (***)
  1154. Return: AX = status
  1155.         0000h sound started playing
  1156.         0001h sound was posted as pending to play
  1157.         0002h sound effect already pending, this one not posted
  1158. SeeAlso: AX=0696h
  1159. --------s-660696-----------------------------
  1160. INT 66 - DIGPAK - GET AUDIO PENDING STATUS
  1161.     AX = 0696h
  1162. Return: AX = status
  1163.         0000h no sound is playing
  1164.         0001h sound playing, and a sound is pending
  1165.         0002h sound playing, no sound pending
  1166. SeeAlso: AX=0695h
  1167. --------s-660697-----------------------------
  1168. INT 66 - DIGPAK - SET STEREO PANNING
  1169.     AX = 0697h
  1170.     DX = panning position (0 = right, 127 = left)
  1171. Return: AX = status
  1172.         0000h command ignored (not supported)
  1173.         0001h panning set
  1174. --------s-660698-----------------------------
  1175. INT 66 - DIGPAK - SET PLAY MODE
  1176.     AX = 0698h
  1177.     DX = playback mode
  1178.         0000h 8-bit PCM
  1179.         0001h 8-bit stereo PCM
  1180.         0002h 16-bit PCM
  1181.         0003h 16-bit stereo PCM
  1182. Return: AX = status
  1183.         0000h command ignored
  1184.         0001h mode set
  1185. --------s-660699-----------------------------
  1186. INT 66 - DIGPAK - GET ADDRESSES
  1187.     AX = 0699h
  1188. Return: AX = pending address
  1189.     BX = semaphore address
  1190. --------s-66069A-----------------------------
  1191. INT 66 - DIGPAK - SET RECORD MODE
  1192.     AX = 069Ah
  1193.     DX = recording mode
  1194.         0000h turn audio recording on
  1195.         0001h turn audio recording off
  1196. Return: AX = status
  1197.         0000h command ignored
  1198.         0001h audio recording mode set
  1199. --------s-66069B-----------------------------
  1200. INT 66 - DIGPAK - STOP NEXT LOOP
  1201.     AX = 069Bh
  1202. --------s-66069C-----------------------------
  1203. INT 66 - DIGPAK - SET DMA BACKFILL MODE
  1204.     AX = 069Ch
  1205.     DX = mode
  1206.         0000h turn backfill mode on
  1207.         0001h turn backfill mode off
  1208. Return: AX = status
  1209.         0000h command ignored
  1210.         0001h backfill mode set
  1211. SeeAlso: AX=069Dh,AX=069Eh
  1212. --------s-66069D-----------------------------
  1213. INT 66 - DIGPAK - REPORT DMA COUNTER
  1214.     AX = 069Dh
  1215. Return: AX = DMA counter
  1216. SeeAlso: AX=069Eh
  1217. --------s-66069E-----------------------------
  1218. INT 66 - DIGPAK - VERIFY DMA BLOCK
  1219.     AX = 069Eh
  1220.     CX = length of buffer
  1221.     ES:BX -> buffer containing sound data
  1222. Return: AX = status
  1223.         0000h block crosses 64K bounadary
  1224.         0001h block is OK
  1225. SeeAlso: AX=069Dh
  1226. --------s-66069F-----------------------------
  1227. INT 66 - DIGPAK - SET PCM VOLUME
  1228.     AX = 069Fh
  1229.     BX = left channel volume (0-100)
  1230.     CX = right channel volume (0-100)
  1231. Return: AX =  status
  1232.         0000h command ignored
  1233.         0001h volume set
  1234. --------s-6606A0-----------------------------
  1235. INT 66 - DIGPAK - SET DPMI MODE
  1236.     AX = 06A0h
  1237.     DX = mode
  1238.         0000h 32-bit register addressing on
  1239.         0001h 32-bit register addressing off
  1240. SeeAlso: INT 31/AX=0400h
  1241. --------s-660700-----------------------------
  1242. INT 66 - MIDPAK - UNINSTALL
  1243.     AX = 0700h
  1244. Note:    this function should NOT be called by applications
  1245. Program: MIDPAK is a set of MIDI sound drivers developed by Miles Design
  1246.       Incorporated.
  1247. --------s-660701-----------------------------
  1248. INT 66 - IBM Digitized Sound Package MIDI driver - GET DIGITIZED SOUND CAPABIL
  1249.     AX = 0701h
  1250. Return: AX = digitized sound capabilities
  1251.         0000h if digitized sound driver (functions 06xxh) not available
  1252. Notes:    the installation check for the MIDI driver is to test for the signature
  1253.       "MIDI" six bytes before the interrupt handler
  1254.     also supported by MIDPAK, the successor to the Digitized Sound
  1255.       Package's MIDI driver
  1256. SeeAlso: AX=0688h
  1257. --------s-660702-----------------------------
  1258. INT 66 - MIDPAK - PLAY SEQUENCE
  1259.     AX = 0702h
  1260.     BX = Sequence number
  1261. Return: AX = status
  1262.         0000h Sequence is being played
  1263.         0001h Sequence not available
  1264. SeeAlso: AX=0703h,AX=0705h
  1265. --------s-660703-----------------------------
  1266. INT 66 - MIDPAK - SEGUE SEQUENCE
  1267.     AX = 0703h
  1268.     BX = sequence number
  1269.     CX = activation code (FFFFh is next trigger)
  1270. Return: ???
  1271. --------s-660704-----------------------------
  1272. INT 66 - MIDPAK - REGISTER XMIDI
  1273.     AX = 0704h
  1274.     CX:BX -> XMIDI sequence data
  1275.     DI:SI = length of XMIDI data
  1276. Return: AX = status
  1277.         0000h unable to register XMIDI data
  1278.         0001h XMIDI file registered resident
  1279.         0002h XMIDI file was registered to the application
  1280. --------s-660705-----------------------------
  1281. INT 66 - MIDPAK - STOP MIDI
  1282.     AX = 0705h
  1283. SeeAlso: AX=0702h,AX=0709h
  1284. --------s-660706-----------------------------
  1285. INT 66 O - MIDPAK - REMAP CHANNEL
  1286.     AX = 0706h
  1287.     BX = sequence
  1288.     CX = physical
  1289. --------s-660707-----------------------------
  1290. INT 66 - MIDPAK - REPORT TRIGGER EVENT COUNTER
  1291.     AX = 0707h
  1292. Return: AX = count of number of callbacks since last reset
  1293.     DX = ID
  1294. SeeAlso: AX=0708h,AX=0713h
  1295. --------s-660708-----------------------------
  1296. INT 66 - MIDPAK - RESET EVENT TRIGGER COUNTER
  1297.     AX = 0708h
  1298. SeeAlso: AX=0707h,AX=0713h
  1299. --------s-660709-----------------------------
  1300. INT 66 O - MIDPAK - MIDI SLEEP
  1301.     AX = 0709h
  1302. SeeAlso: AX=070Ah
  1303. --------s-66070A-----------------------------
  1304. INT 66 O - MIDPAK - MIDI AWAKE
  1305.     AX = 070Ah
  1306. SeeAlso: AX=0709h
  1307. --------s-66070B-----------------------------
  1308. INT 66 - MIDPAK - RESUME PLAYING
  1309.     AX = 070Bh
  1310. SeeAlso: AX=070Ch
  1311. --------s-66070C-----------------------------
  1312. INT 66 - MIDPAK - GET SEQUENCE STATUS
  1313.     AX = 070Ch
  1314. Return: AX = status
  1315.         0000h sequence stopped
  1316.         0001h sequence playing
  1317.         0002h sequence done
  1318. SeeAlso: AX=070Bh
  1319. --------s-66070D-----------------------------
  1320. INT 66 - MIDPAK - REGISTER XMIDI FILE
  1321.     AX = 070Dh
  1322.     CX:BX -> ASCII filename
  1323. SeeAlso: AX=0704h,AX=0710h
  1324. --------s-66070E-----------------------------
  1325. INT 66 - MIDPAK - GET RELATIVE VOLUME
  1326.     AX = 070Eh
  1327. Return: AX = current volume
  1328. SeeAlso: AX=070Fh
  1329. --------s-66070F-----------------------------
  1330. INT 66 - MIDPAK - SET RELATIVE VOLUME
  1331.     AX = 070Fh
  1332.     BX = new volume
  1333.     CX = time
  1334. SeeAlso: AX=070Eh
  1335. --------s-660710-----------------------------
  1336. INT 66 - MIDPAK - LOAD MIDPAK DRIVER
  1337.     AX = 0710h
  1338.     BX = segment of .ADV driver
  1339.     CX = 0000h (offset must be zero)
  1340.     DX:SI -> .AD driver
  1341. SeeAlso: AX=070Dh
  1342. --------s-660711-----------------------------
  1343. INT 66 - MIDPAK - POLL MIDPAK
  1344.     AX = 0711h
  1345. Return: AX = ???
  1346.     ???
  1347. SeeAlso: AX=0712h
  1348. --------s-660712-----------------------------
  1349. INT 66 - MIDPAK - GET MIDI CLOCK
  1350.     AX = 0712h
  1351. Return: AX:DX = clock counter
  1352.     CX:BX = clock address
  1353. SeeAlso: AX=0711h,AX=0713h
  1354. --------s-660713-----------------------------
  1355. INT 66 - MIDPAK - GET TRIGGER COUNT ADDRESS
  1356.     AX = 0713h
  1357. Return: AX:DX -> trigger counter address
  1358. SeeAlso: AX=0707h,AX=0712h,AX=0714h
  1359. --------s-660714-----------------------------
  1360. INT 66 - MIDPAK - GET EVENT ID ADDRESS
  1361.     AX = 0714h
  1362. Return: AX:DX -> event ID
  1363. SeeAlso: AX=0713h,AX=0716h
  1364. --------s-660716-----------------------------
  1365. INT 66 - MIDPAK - REPORT SEQUENCE NUMBER
  1366.     AX = 0716h
  1367. Return: AX = current sequence number
  1368. SeeAlso: AX=0702h
  1369. Program: MIDPAK is a set of MIDI sound drivers developed by Miles Design
  1370.       Incorporated.
  1371. --------n-6610-------------------------------
  1372. INT 66 - PenDOS - TDMOUSE.EXE - GET ???
  1373.     AH = 10h
  1374. Return: CF clear
  1375.     AX = 0000h
  1376.     BX = ??? (0012h)
  1377.     DX:CX -> TDMOUSE INT 33 handler (IRET to hide mouse from other apps)
  1378. Program: TDMOUSE is a PenDOS hardware driver which allows a mouse to emulate
  1379.       a touchpad; PenDOS is a set of programs by Communication Intelligence
  1380.       Corporation which makes applications pen-aware
  1381. --------n-6611-------------------------------
  1382. INT 66 - PenDOS - TDMOUSE.EXE - SET ??? HANDLER
  1383.     AH = 11h
  1384.     DX:BX -> new handler for ???
  1385. Return: CF clear
  1386.     AX = 0000h
  1387.     DX:BX -> old handler for ??? (points at RETF by default)
  1388. --------n-6612-------------------------------
  1389. INT 66 - PenDOS - TDMOUSE.EXE - INITIALIZE
  1390.     AH = 12h
  1391. Return: CF clear
  1392.     AX = 0000h
  1393. Note:    this function calls the old mouse handler with functions 0000h, 0002h,
  1394.       0007h, 0008h, 000Fh, 0004h, and 000Ch (in that order)
  1395. SeeAlso: AH=13h
  1396. --------n-6613-------------------------------
  1397. INT 66 - PenDOS - TDMOUSE.EXE - SHUTDOWN???
  1398.     AH = 13h
  1399. Return: CF clear
  1400.     other register as returned by INT 33/AX=0000h
  1401. SeeAlso: AH=12h
  1402. --------n-6614-------------------------------
  1403. INT 66 - PenDOS - TDMOUSE.EXE - ???
  1404.     AH = 14h
  1405.     BX = ???
  1406.     CX = ???
  1407. Return: CF clear
  1408.     AX = 0000h
  1409. --------n-6615-------------------------------
  1410. INT 66 - PenDOS - TDMOUSE.EXE - SET ??? HANDLER
  1411.     AH = 15h
  1412.     DX:BX -> new handler for ???
  1413. Return: CF clear
  1414.     AX = 0000h
  1415.     DX:BX -> old handler (points at RETF by default)
  1416. --------n-6616-------------------------------
  1417. INT 66 - PenDOS - TDMOUSE.EXE - UNUSED FUNCTIONS
  1418.     AH = 16h to 1Fh
  1419. Return: CF set
  1420. Program: TDMOUSE is a PenDOS hardware driver which allows a mouse to emulate
  1421.       a touchpad; PenDOS is a set of programs by Communication Intelligence
  1422.       Corporation which makes applications pen-aware
  1423. --------n-6621-------------------------------
  1424. INT 66 - PenDOS - PINK - ???
  1425.     AH = 21h
  1426. Return: CF clear if successful
  1427.     CF set on error
  1428. Note:    this function sets ??? flag or counter (also set by AH=2Fh) to FFFFh
  1429. --------n-6622-------------------------------
  1430. INT 66 - PenDOS - PINK - ???
  1431.     AH = 22h
  1432.     DX:BX -> ???
  1433.     CL = ???
  1434. Return: CF clear if successful
  1435.     CF set on error
  1436.     ???
  1437. SeeAlso: AH=24h
  1438. --------n-6623-------------------------------
  1439. INT 66 - PenDOS - PINK - ???
  1440.     AH = 23h
  1441.     ???
  1442. Return: CF clear if successful
  1443.     CF set on error
  1444.     ???
  1445. --------n-6624-------------------------------
  1446. INT 66 - PenDOS - PINK - ???
  1447.     AH = 24h
  1448.     DX:BX -> ???
  1449.     CL = ???
  1450. Return: CF clear if successful
  1451.     CF set on error
  1452.     ???
  1453. SeeAlso: AH=22h
  1454. --------n-6625-------------------------------
  1455. INT 66 - PenDOS - PINK - ???
  1456.     AH = 25h
  1457.     CL = ??? (NOP if 00h)
  1458.     ???
  1459. Return: CF clear if successful
  1460.     CF set on error
  1461.     ???
  1462. --------n-6627-------------------------------
  1463. INT 66 - PenDOS - PINK - ???
  1464.     AH = 27h
  1465.     BL = ???
  1466.     BH = ???
  1467.     CL = ??? (0-3)
  1468.     DL = ??? (> BL)
  1469.     DH = ??? (> BH)
  1470. Return: ???
  1471. --------n-6628-------------------------------
  1472. INT 66 - PenDOS - PINK - ???
  1473.     AH = 28h
  1474.     ???
  1475. Return: CF clear if successful
  1476.     CF set on error
  1477.     ???
  1478. Note:    this function sets ??? flag or counter (also set by AH=2Fh) to FFFFh
  1479. --------n-6629-------------------------------
  1480. INT 66 - PenDOS - PINK - ???
  1481.     AH = 29h
  1482.     ???
  1483. Return: ???
  1484. Note:    this function sets ??? flag or counter (also set by AH=2Fh) to FFFFh
  1485. --------n-662A-------------------------------
  1486. INT 66 - PenDOS - PINK - ???
  1487.     AH = 2Ah
  1488.     DL = ??? (nonzero)
  1489.     DH = ??? (nonzero)
  1490. Return: CF clear if successful
  1491.     CF set on error
  1492.     ???
  1493. --------n-662B-------------------------------
  1494. INT 66 - PenDOS - PINK - ???
  1495.     AH = 2Bh
  1496.     ???
  1497. Return: CF clear if successful
  1498.     CF set on error
  1499.     ???
  1500. --------n-662F-------------------------------
  1501. INT 66 - PenDOS - PINK - INITIALIZE
  1502.     AH = 2Fh
  1503.     ???
  1504. Return: AX = status
  1505.         0000h failed
  1506.         FFFFh successful
  1507.     ???
  1508. Note:    this function sets ??? flag or counter to FFFFh and hooks INT 1Ch
  1509. --------F-663345-----------------------------
  1510. INT 66 - BitFax Scheduler - REMOVE TSR FROM MEMORY
  1511.     AX = 3345h
  1512. Return: AX = FFFFh error removing TSR
  1513. Note:    the installation check consists of checking for the signature
  1514.       "BitFax Scheduler" beginning two bytes past the interrupt handler
  1515. SeeAlso: AH=04h,INT 2F/AH=2Ah,INT 2F/AX=CB00h
  1516. Index:    installation check;BitFax Scheduler
  1517. --------n-6640-------------------------------
  1518. INT 66 - PenDOS - PKEYUS - GET VERSION
  1519.     AH = 40h
  1520. Return: CF clear
  1521.     AX = 0000h
  1522.     BH = major version (02h for version bundled with IBM DOS 6.1)
  1523.     BL = minor version (00h for version bundled with IBM DOS 6.1)
  1524.     DL = ??? (4Eh)
  1525.     DH = ??? (0Eh)
  1526. --------n-6641-------------------------------
  1527. INT 66 - PenDOS - PKEYUS - SET ???
  1528.     AH = 41h
  1529.     BX = ???
  1530.     CL = ??? (08h-20h)
  1531.     DL = screen column??? (<= 50h)
  1532.     DH = screen row???  (<= 3Ch)
  1533. Return: AX = status (0000h successful, 0001h error)
  1534. Note:    this function also sets an internal flag
  1535. SeeAlso: AH=42h,AH=43h
  1536. --------n-6642-------------------------------
  1537. INT 66 - PenDOS - PKEYUS - ???
  1538.     AH = 42h
  1539. Return: CF clear
  1540.     AX = 0000h
  1541. Note:    this function also clears the flag set by AH=41h
  1542. SeeAlso: AH=41h
  1543. --------n-6643-------------------------------
  1544. INT 66 - PenDOS - PKEYUS - ???
  1545.     AH = 43h
  1546.     BX = ???
  1547.     DX = ???
  1548. Return: AX = status
  1549.         0000h if AH=41h flag set
  1550.         else
  1551.         AH = ???
  1552.         AL = ???
  1553.         BX = ???
  1554.         DX = ???
  1555. SeeAlso: AH=41h
  1556. --------n-6644-------------------------------
  1557. INT 66 - PenDOS - PKEYUS - UNUSED FUNCTIONS
  1558.     AH = 44h to 4Fh
  1559. Return: CF set
  1560. --------n-6650-------------------------------
  1561. INT 66 - PenDOS - PMOUSE - SET ???
  1562.     AH = 50h
  1563.     BX = ???
  1564.     CH = ???
  1565.     DX = ???
  1566. Return: CF clear
  1567.     AX = 0000h
  1568. --------n-6651-------------------------------
  1569. INT 66 - PenDOS - PMOUSE - NOP
  1570.     AH = 51h
  1571. Return: CF set
  1572. --------n-6652-------------------------------
  1573. INT 66 - PenDOS - PMOUSE - ???
  1574.     AH = 52h
  1575.     BX = ???
  1576.     CL = ???
  1577.     DX = ???
  1578. Return: ???
  1579. --------n-6653-------------------------------
  1580. INT 66 - PenDOS - PMOUSE - UNUSED FUNCTIONS
  1581.     AH = 53h to 57h
  1582. Return: CF set
  1583. --------n-66---------------------------------
  1584. INT 66 - PenDOS - PMOUSE - ALTERNATE API
  1585.     AH = function (58h-5Fh)
  1586. Note:    these functions exactly duplicate AH=50h-57h
  1587. --------U-66AA02-----------------------------
  1588. INT 66 - HelpTSR v2.10 - INSTALLATION CHECK
  1589.     AX = AA02h
  1590. Return: ES:DI -> 7 byte signature "HelpTSR" if resident
  1591. Program: HelpTSR is a resident viewer by David Jurgens for HelpPC
  1592. --------n-66C5-------------------------------
  1593. INT 66 - PenDOS - VLOAD - API
  1594.     AH = C5h
  1595.     ???
  1596. Return: ???
  1597. --------t-66FFFBBXFFFB-----------------------
  1598. INT 66 - MicroHelp Stay-Res Plus - ???
  1599.     AX = FFFBh
  1600.     BX = FFFBh
  1601.     ???
  1602. Return: ???
  1603. SeeAlso: AX=FFFEh,INT 2D"AMIS"
  1604. --------t-66FFFEBXFFFE-----------------------
  1605. INT 66 - MicroHelp Stay-Res/Stay-Res Plus - UNINSTALL
  1606.     AX = FFFEh
  1607.     BX = FFFEh
  1608. Return: only if unsuccessful
  1609. Notes:    installation check is for the interrupt handler to begin with the bytes
  1610.       FBh 9Ch or 9Ch FAh, and the program name (not case-sensitive) to
  1611.       appear at offset 0005h (older versions) or the offset returned by
  1612.       AX=FFFFh/BX=FFF0h in the interrupt handler segment.
  1613.     Programs which use Stay-Res include ThesPlus (program name "THESPLUS")
  1614.       and Personal Calendar (program name "CAL") by Paul Mun~oz-Colman.
  1615. SeeAlso: AX=FFFBh,AX=FFFFh,INT 2D"AMIS"
  1616. Index:    installation check;MicroHelp Stay-Res|installation check;ThesPlus
  1617. Index:    installation check;Personal Calendar|installation check;CAL
  1618. --------t-66FFFFBXFFF0-----------------------
  1619. INT 66 - MicroHelp Stay-Res Plus - FIND PROGRAM NAME
  1620.     AX = FFFFh
  1621.     BX = FFF0h
  1622. Return: DI = offset of program name in interrupt handler segment
  1623. SeeAlso: AX=FFFBh,AX=FFFEh,INT 2D"AMIS"
  1624. --------d-67---------------------------------
  1625. INT 67 - Adaptec controllers - DRIVE 1 DATA
  1626. Desc:    this vector stores the last four bytes of the parameter table for
  1627.       hard disk 1
  1628. SeeAlso: INT 64"Adaptec",INT 65"Adaptec",INT 66"Adaptec"
  1629. --------b-67---------------------------------
  1630. INT 67 - TI Professional PC - SYSTEM DATA (NOT A VECTOR!)
  1631. Desc:    this vector contains the TI Pro's system configuration words
  1632.       (see #2770)
  1633. SeeAlso: INT 66"TI Professional PC"
  1634.  
  1635. Bitfields for TI Professional PC System Configuration doubleword:
  1636. Bit(s)    Description    (Table 2770)
  1637.  0    8087 present
  1638.  31-1    reserved (0)
  1639. --------d-67---------------------------------
  1640. INT 67 - Pdisk by Scott Garfinkle - Overwritten for Hard Drive information
  1641. SeeAlso: INT 64"Pdisk",INT 66"Pdisk"
  1642. --------I-67---------------------------------
  1643. INT 67 - Sangoma CCPOP 3270 resident module
  1644. SeeAlso: INT 61"Sangoma",INT 68"Sangoma"
  1645. --------U-67---------------------------------
  1646. INT 67 - CUCKOO.COM - INSTALLATION CHECK
  1647. Program: CUCKOO is a resident on-screen clock with optional hourly chime or
  1648.       cuckoo by an unknown author with revisions by Thomas A. Lundin
  1649. Note:    this is not a vector; when loaded for the first time, CUCKOO.COM uses
  1650.       the last unused (0000h:0000h) vector in the range 60h-67h to store
  1651.       the signature value 434Ch:4F4Bh ('CLOK')
  1652. ----------67---------------------------------
  1653. INT 67 - PC-DRAFT - KEYBOARD DRIVER
  1654.     ???
  1655. Return: ???
  1656. Program: PC-DRAFT is a powerful CAD environment by rhv.
  1657. SeeAlso: INT 62"PC-DRAFT",INT 64"PC-DRAFT",INT 65"PC-DRAFT",INT 66"PC-DRAFT"
  1658. --------N-6700-------------------------------
  1659. INT 67 - PC-NET, Alloy NTNX - LOCK SEMAPHORE AND WAIT
  1660.     AH = 00h
  1661.     DS:DX -> ASCIZ semaphore name (max 64 bytes)
  1662. Return: AL = status (see #2771)
  1663.     AH = semaphore owner if status=02h
  1664. SeeAlso: AH=01h,AH=02h"PC-NET",INT 7F/AH=00h
  1665.  
  1666. (Table 2771)
  1667. Values for PC-NET semaphore function status:
  1668.  00h    successful
  1669.  01h    invalid function
  1670.  02h    semaphore already locked
  1671.  03h    unable to lock semaphore
  1672.  04h    semaphore space exhausted
  1673. --------N-6701-------------------------------
  1674. INT 67 - PC-NET, Alloy NTNX - LOCK SEMAPHORE
  1675.     AH = 01h
  1676.     DS:DX -> ASCIZ semaphore name (max 64 bytes)
  1677. Return: AL = status (see #2771)
  1678.     AH = semaphore owner if status=02h
  1679. SeeAlso: AH=00h,AH=02h"PC-NET",INT 7F/AH=01h"Alloy"
  1680. --------N-6702-------------------------------
  1681. INT 67 - PC-NET, Alloy NTNX - UNLOCK SEMAPHORE
  1682.     AH = 02h
  1683.     DS:DX -> ASCIZ semaphore name (max 64 bytes)
  1684. Return: AL = status (see #2771)
  1685.     AH = semaphore owner if status=02h
  1686. SeeAlso: AH=00h,AH=01h"PC-NET",INT 7F/AH=02h
  1687. --------m-671E-------------------------------
  1688. INT 67 U - Qualitas 386MAX v7.00 - MEMLIMIT - INSTALLATION CHECK
  1689.     AH = 1Eh
  1690. Return: AH = 00h if installed
  1691.         AL destroyed
  1692.         ES:DI -> ASCII signature "MemLimit"
  1693. SeeAlso: AH=1Fh,INT 21/AX=4402h"386MAX"
  1694. --------m-671F-------------------------------
  1695. INT 67 U - Qualitas 386MAX v7.00 - MEMLIMIT - API
  1696.     AH = 1Fh
  1697.     DS:SI -> request packet (see #2772)
  1698. Return: AH = status (00h successful, 84h invalid function code, etc.)
  1699. SeeAlso: AH=1Eh
  1700.  
  1701. Format of 386MAX MEMLIMIT request packet:
  1702. Offset    Size    Description    (Table 2772)
  1703.  00h    WORD    function code (00h-0Fh)
  1704.  02h    WORD    return code (see #2773)
  1705.  04h  4 BYTEs    ???
  1706.  08h    WORD    ???
  1707.     ???
  1708.  
  1709. (Table 2773)
  1710. Values for 386MAX MEMLIMIT return code:
  1711.  00h    unknown request
  1712.  01h    invalid parameter for VCPI limit
  1713.  02h    VCPI limit set
  1714.  03h    invalid parameter for EMS limit
  1715.  04h    EMS limit set
  1716.  05h    DPMI disabled
  1717.  06h    XMS disabled
  1718.  07h    XMS limit set
  1719.  08h    unable to uninstall
  1720.  09h    unloaded
  1721. --------m-672763CL01-------------------------
  1722. INT 67 - VIDEMS.SYS v1.31+ - INSTALLATION CHECK
  1723.     AX = 2763h
  1724.     CL = 01h
  1725.     BX = signature AAFFh
  1726. Return: AH = 00h if VIDEMS is installed
  1727.         CH = 00h if optimization for 80286 is used, 01h otherwise
  1728.         CL = internal revision number (typically 00h to 03h)
  1729.         DX = driver version (DH=major, DL=minor; not a BCD!)
  1730.     AH = 84h if not installed but EMS manager is present
  1731. Program: VIDEMS is an expanded memory manager from Conea Software Corp. It
  1732.      converts video adapter RAM to LIM 3.2 EMS.
  1733. SeeAlso: AX=2763h/CL=02h,AX=2763h/CL=03h
  1734. --------m-672763CL02-------------------------
  1735. INT 67 - VIDEMS.SYS v1.31+ - FLUSH EMS TO VIDEO RAM
  1736.     AX = 2763h
  1737.     CL = 02h
  1738.     BX = signature AAFFh
  1739. Return: AH = 00h if successful
  1740. Notes:    This call is normally used by Conea products only.
  1741. SeeAlso: AX=2763h/CL=01h,AX=2763h/CL=03h
  1742. --------m-672763CL02-------------------------
  1743. INT 67 - VIDEMS.SYS v1.31+ - RELOAD EMS FROM VIDEO RAM
  1744.     AX = 2763h
  1745.     CL = 02h
  1746.     [Yes, I know the registers are duplicated.  Clarification to follow.]
  1747.     BX = signature AAFFh
  1748. Return: AH = 00h if successful
  1749. Notes:    This call is normally used by Conea products only.
  1750. SeeAlso: AX=2763h/CL=01h,AX=2763h/CL=03h
  1751. --------m-672763CL03-------------------------
  1752. INT 67 - VIDEMS.SYS v1.31+ - RETURN HIDDEN BLOCK SIZE
  1753.     AX = 2763h
  1754.     CL = 03h
  1755.     BX = signature AAFFh
  1756. Return: AH = 00h if successful
  1757.         DX = block size in kilobytes
  1758. Desc:    Returns the amount of EMS which can be safely used at any time, and
  1759.       can't be destroyed by writing anything to the B800:0000 buffer.
  1760. Note:    this function normally returns 184K, while the driver provides up to
  1761.       240K of EMS.
  1762. SeeAlso: AX=2763h/CL=01h,AX=2763h/CL=02h
  1763. --------m-672763CL03-------------------------
  1764. INT 67 - VIDEMS.SYS v1.31+ - RETURN PHYSICAL PAGE SIZE
  1765.     AX = 2763h
  1766.     CL = 03h
  1767.     [Yes, I know the registers are duplicated.  Clarification to follow.]
  1768.     BX = signature AAFFh
  1769. Return: AH = 00h
  1770.     DX = size in bytes
  1771. Desc:    Used by Conea products to determine if addressing mode has changed.
  1772.       Normally, all VIDEMS versions beginning from 1.10 (or 1.15 - ?) use
  1773.       4K "physical" pages.
  1774. Notes:    this function will probably become raw page size in future releases of
  1775.       VIDEMS, which    will support the LIM 4.0 standard.
  1776. SeeAlso: AX=2763h/CL=01h,AX=2763h/CL=02h
  1777. --------u-672833-----------------------------
  1778. INT 67 - Q87 v4+ - PREPARE TO UNLOAD AND GET XMS HANDLE FOR Q87 MEMORY
  1779.     AX = 2833h
  1780.     EAX = 29482833h (entire EAX value required)
  1781. Return: EAX = XMS handle for memory allocated when Q87 was installed
  1782.     EBX = status
  1783.         00000000h Q87 is in demo mode (countdown running);
  1784.               Q87 remains active
  1785.         00000001h Q87 is in registered mode; memory manager's IDT, GDT,
  1786.               and optionally CR0 (if BL <> 5Fh on entry) have
  1787.               been restored
  1788.         00000002h Q87 is in demo mode (demo time has expired);
  1789.               Q87 remains active
  1790. Note:    this call is used by UNLOAD87 to release the memory used by Q87
  1791. BUG:    v4.00-v4.03 will hang on most machines when run under bare DOS with
  1792.       no memory manager, because neither Q87 nor UNLOAD87 checks whether
  1793.       there is a valid INT 67 handler before performing an installation
  1794.       check via INT 67
  1795. SeeAlso: AX=4321h,INT 21/AX=4321h/BX=0000h
  1796. --------m-673F--CX5145-----------------------
  1797. INT 67 U - QEMM-386 v4.23+ - INSTALLATION CHECK
  1798.     AH = 3Fh
  1799.     CX = 5145h ("QE")
  1800.     DX = 4D4Dh ("MM")
  1801. Return: AH = 00h if installed
  1802.         ES:DI -> QEMM API entry point (see #2774,#2777,#2889)
  1803. Notes:    if no other program has hooked INT 67, an alternate installation
  1804.       check is to test for the string
  1805.       "QUARTERDECK EXPANDED MEMORY MANAGER 386" at offset 14h in the INT 67
  1806.       handler's segment; the word at offset 12h contains the offset in
  1807.       the handler's segment of the API entry point
  1808.     although this function is still undocumented, Quarterdeck has recently
  1809.       documented two alternate methods for determining the QEMM API entry
  1810.       point, as well as several of the API functions
  1811.     MICEMM (Micronics Expanded Memory Manager) versions 2.0C and 4D support
  1812.       the alternate QEMM installation check and entry point functions 00h,
  1813.       02h, and 03h; version 4D only provides the signature string if the
  1814.       commandline argument "DV" is provided
  1815.     386MAX v6.01 responds to this call, but DESQview 2.42 does not
  1816.       recognize the returned entry point as providing QEMM's capabilities
  1817.       because a) only functions 0Ch (different from QEMM 0Ch) and
  1818.             1000h-1009h are supported,
  1819.           b) status is returned as for EMS functions, not QEMM funcs
  1820.           c) the protected-mode entry point returned by function 1000h
  1821.             only supports functions 0Ch, 1004h, 1005h, and 100Ah
  1822.     the string check mentioned above is not supported by 386MAX
  1823. SeeAlso: AX=5BF0h,AH=DDh,AX=FFA5h,INT 15/AX=11DEh,INT 21/AX=4402h/SF=01h
  1824. SeeAlso: INT 21/AX=4402h"QEMM",INT 21/AX=4402h"386MAX",INT 2F/AX=D201h/BX=5145h
  1825.  
  1826. (Table 2774)
  1827. Values for calling QEMM "QPI_GetStatus" function:
  1828.     AH = 00h get QEMM state
  1829. Return: CF clear
  1830.     AL = QEMM state
  1831.         bit 0 set if QEMM turned OFF
  1832.         bit 1 set if in "Auto" mode
  1833. Note:    this function is officially documented
  1834. SeeAlso: #2775,#2776,#2777,#2889
  1835.  
  1836. (Table 2775)
  1837. Values for calling QEMM "QPI_SetStatus" function:
  1838.     AH = 01h set QEMM state
  1839.     AL = new state
  1840.         bit 0 set: place QEMM in OFF state
  1841. Return: CF clear if successful
  1842.     CF set on error
  1843. Note:    this function is officially documented
  1844. SeeAlso: #2774
  1845.  
  1846. (Table 2776)
  1847. Values for calling QEMM QPI function 02h:
  1848.     AH = 02h get ???
  1849. Return: CF clear
  1850.     AX = segment of ??? data structure
  1851.     Data Structure
  1852.     Offset    Size    Description
  1853.      00h    DWORD    page table entry for ???
  1854.         ???
  1855. SeeAlso: #2777
  1856.  
  1857. (Table 2777)
  1858. Values for calling QEMM "QPI_GetVersion" function:
  1859.     AH = 03h get QEMM version
  1860. Return: CF clear
  1861.     AX = BX = version in BCD
  1862. Notes:    this function is officially documented.     The most recent official docs
  1863.       state that the version is returned in both AX and BX; older
  1864.       documentation only mentions BX
  1865.     MICEMM returns AX=0001h, BX unchanged
  1866. SeeAlso: #2774,#2778
  1867.  
  1868. (Table 2778)
  1869. Values for calling QEMM QPI function 04h:
  1870.     AH = 04h allocate 4K page and set AUTO/ON mode
  1871. Return: CF clear if successful
  1872.         DX = page number of a 4K page
  1873.     CF set if unable to allocate page
  1874. Note:    QEMM mode unchanged if not AUTO/OFF
  1875. SeeAlso: #2779
  1876.  
  1877. (Table 2779)
  1878. Values for calling QEMM QPI function 05h:
  1879.     AH = 05h free 4K page and turn QEMM off
  1880.     DX = page number returned by function 04h
  1881. Return: CF clear
  1882. Note:    QEMM mode unchanged if not AUTO/ON
  1883. SeeAlso: #2778,#2780
  1884.  
  1885. (Table 2780)
  1886. Values for calling QEMM QPI function 06h:
  1887.     AH = 06h make new mapping context???
  1888.     DX = page number of 4K page to hold page table
  1889. Return: CF clear
  1890. Note:    copies page table into given page and then sets ??? page table entry
  1891.       to point at copy
  1892. SeeAlso: #2781,#2782
  1893.  
  1894. (Table 2781)
  1895. Values for calling QEMM QPI function 07h:
  1896.     AH = 07h get mapping context
  1897. Return: CF clear
  1898.     DX = page number of page table for current mapping context
  1899. SeeAlso: #2777,#2780,#2782
  1900.  
  1901. (Table 2782)
  1902. Values for calling QEMM QPI function 08h:
  1903.     AH = 08h set mapping context???
  1904.     DX = linear page number of page table
  1905. Return: CF clear
  1906. SeeAlso: #2777,#2780,#2781,#2783,#2785
  1907.  
  1908. (Table 2783)
  1909. Values for calling QEMM QPI function 09h:
  1910.     AH = 09h get linear page number for page table entry
  1911.     CX = page table index
  1912. Return: CF clear
  1913.     DX = linear page number
  1914. SeeAlso: #2784
  1915.  
  1916. (Table 2784)
  1917. Values for calling QEMM QPI function 0Ah:
  1918.     AH = 0Ah set linear page number for page table entry
  1919.     CX = page table index
  1920.     DX = linear page number
  1921. Return: CF clear
  1922. SeeAlso: #2783
  1923.  
  1924. (Table 2785)
  1925. Values for calling QEMM QPI function 0Bh:
  1926.     AH = 0Bh map 4K pages
  1927.     BX = number of pages
  1928.     CX = first page number (must be 0100h to allocate HMA)
  1929.     DX = EMS handle (memory belonging to EMS handle will be mapped
  1930.           into the address space beginning with the first page
  1931.           allocated to the handle)
  1932. Return: AH = 00h
  1933. SeeAlso: #2782,#2786
  1934.  
  1935. (Table 2786)
  1936. Values for calling QEMM QPI function 0Ch:
  1937.     AH = 0Ch get available memory
  1938. Return: CF clear
  1939.     BX = 0001h
  1940.     CX = total 4K pages???
  1941.     DX = number of 4K pages free
  1942. SeeAlso: #2785,#2787
  1943.  
  1944. (Table 2787)
  1945. Values for calling QEMM QPI function 0Dh:
  1946.     AH = 0Dh CRT controller I/O port trapping
  1947.     AL = mode
  1948.         00h only trap on I/O ports 03C0h-03C5h, 03C7h, 03CAh-03CFh
  1949.         01h trap on ports 03B4h, 03B5h, 03B8h, 03C6h, 03C8h, 03C9h,
  1950.           03D4h, and 03D5h
  1951.         02h only trap on I/O ports 03C6h, 03C8h, and 03C9h
  1952. Return: CF clear
  1953.  
  1954. (Table 2788)
  1955. Values for calling QEMM QPI function 0Eh:
  1956.     AH = 0Eh set cursor virtualization callbacks
  1957.     DS:BX -> FAR routine for getting hardware cursor address
  1958.     ES:DX -> FAR routine for setting hardware cursor address
  1959. Return: CF clear
  1960. Note:    both callbacks are invoked with CL indicating which
  1961.       CRT controller register to access (0Eh for high
  1962.       byte of cursor address, 0Fh for low byte)
  1963.     the DS:BX callback should return BX=cursor address;
  1964.       ES:DX is called with BL or BH (depending on CL)
  1965.       set to the appropriate half of the cursor's address
  1966.  
  1967. (Table 2789)
  1968. Values for calling QEMM QPI function 0Fh:
  1969.     AH = 0Fh unmap 4K pages
  1970.     CX = first page number
  1971.     DX = number of pages
  1972. Return: CF clear
  1973.     AL = 00h/01h if ???
  1974. Note:    if CX=0100h and DX=0010h, the HMA is remapped to
  1975.       simulate a disabled A20
  1976.  
  1977. (Table 2790)
  1978. Values for calling QEMM QPI function 1000h:
  1979.     AX = 1000h get protected-mode interface
  1980.     DS:SI -> 16-byte buffer for two GDT entries
  1981.     ES:DI -> buffer for 4K page table
  1982. Return: CF clear
  1983.     EAX = offset of protected-mode API entry point
  1984.     DS:SI buffer filled with two GDT descriptors
  1985.         first is QEMM code segment, second is data???
  1986.     ES:DI buffer filled with 4K page table
  1987.     DI points to first unused page table entry
  1988. SeeAlso: INT 67/AX=DE01h
  1989.  
  1990. (Table 2791)
  1991. Values for calling QEMM QPI function 1001h:
  1992.     AX = 1001h get CPU debug registers
  1993.     ES:DI -> buffer for debug registers (8 DWORDs)
  1994. Return: CF clear
  1995.     BL = INT01 handling (see #2792)
  1996.     ES:DI buffer filled
  1997.  
  1998. (Table 2792)
  1999. Values for calling QEMM QPI function 1002h:
  2000.     AX = 1002h set CPU debug registers
  2001.     BL = INT01 handling
  2002.         00h     reflect all debugging exceptions as V86-mode INT 01's
  2003.         else convert debugging exceptions other than single-step
  2004.           into V86-mode INT 03's, single-step to INT 01's
  2005.     ES:DI -> buffer containing debug registers (8 DWORDs)
  2006. Return: CF clear
  2007. Notes:    identical to INT 67/AX=DE09h if BL=01h
  2008.     the INT01 handling flag is set to 01h by the general-protection
  2009.       violation handler for certain privileged instructions
  2010. SeeAlso: #2791
  2011.  
  2012. (Table 2793)
  2013. Values for calling QEMM QPI function 1003h:
  2014.     AX = 1003h get machine status word CR0
  2015. Return: CF clear
  2016.     EAX = contents of CR0
  2017. SeeAlso: INT 67/AX=DE07h
  2018.  
  2019. (Table 2794)
  2020. Values for calling QEMM QPI function 1004h:
  2021.     AX = 1004h allocate a 4K page
  2022. Return: CF clear if successful
  2023.         EDX = linear address of allocated page
  2024.     CF set on error
  2025. SeeAlso: INT 67/AX=DE04h
  2026.  
  2027. (Table 2795)
  2028. Values for calling QEMM QPI function 1005h:
  2029.     AX = 1005h free 4K page
  2030.     EDX = linear address of page to free
  2031. Return: CF clear
  2032. SeeAlso: INT 67/AX=DE05h
  2033.  
  2034. (Table 2796)
  2035. Values for calling QEMM QPI function 1006h:
  2036.     AX = 1006h NOP
  2037. Return: CF set
  2038.  
  2039. (Table 2797)
  2040. Values for calling QEMM QPI function 1007h:
  2041.     AX = 1007h get maximum physical memory address
  2042. Return: CF clear
  2043.     EDX = physical address of highest 4K memory page
  2044. SeeAlso: INT 67/AX=DE02h
  2045.  
  2046. (Table 2798)
  2047. Values for calling QEMM QPI function 1008h:
  2048.     AX = 1008h get physical address of page in first megabyte
  2049.     CX = page number (linear address shifted right 12 bits)
  2050. Return: CF clear
  2051.     EDX = linear address of page
  2052. SeeAlso: #2797,#2873,#2874
  2053.  
  2054. (Table 2799)
  2055. Values for calling QEMM QPI function 1009h:
  2056.     AX = 1009h switch to protected mode
  2057.     ESI = linear address in first megabyte of system reg values
  2058.           (see INT 67/AX=DE0Ch)
  2059.     interrupts disabled
  2060. Return: interrupts disabled
  2061.     GDTR, IDTR, LDTR, TR loaded
  2062.     SS:ESP must have at least 16 bytes space, and the
  2063.           entry point is required to set up a new stack
  2064.           before enabling interrupts
  2065.     EAX, ESI, DS, ES, FS, GS destroyed
  2066.  
  2067. (Table 2800)
  2068. Values for calling QEMM QPI function 100Ah:
  2069.     AX = 100Ah switch back to virtual-86 mode
  2070.     DS = selector for data segment from function 1000h
  2071.     SS:ESP in first megabyte of linear memory
  2072.     interrupts disabled
  2073.     STACK:    QWORD  return address from FAR call to 32-bit segment
  2074.         DWORD  EIP
  2075.         DWORD  CS
  2076.         DWORD  reserved for EFLAGS
  2077.         DWORD  ESP
  2078.         DWORD  SS
  2079.         DWORD  ES
  2080.         DWORD  DS
  2081.         DWORD  FS
  2082.         DWORD  GS
  2083.     will switch to virtual86 mode with interrupts disabled, all
  2084.       segment registers loaded, and EAX destroyed.
  2085.  
  2086. (Table 2801)
  2087. Values for calling QEMM QPI function 11h:
  2088.     AH = 11h get memory type map
  2089.     AL = zero/nonzero ??? (set by QEMM.COM but apparently ignored
  2090.           by QEMM 6.00)
  2091.     ES:DI -> 256-byte buffer for memory types
  2092. Return: CF clear
  2093.     BL = ???
  2094.     ES:DI buffer filled
  2095. Note:    each byte of the buffer corresponds to a 4K page, and
  2096.       contains the type of that page: 00h = mappable,
  2097.       02h = mapped ROM, 03h = high RAM, 04h = excluded,
  2098.       05h = video, 06h = ROM, 07h = adapter ROM,
  2099.       08h = split ROM, 09h = page frame, 0Ah = RAMmable,
  2100.       0Bh = conventional, 83h = high RAM under MS Windows
  2101.  
  2102. (Table 2802)
  2103. Values for calling QEMM QPI function 12h:
  2104.     AH = 12h get HIRAM chain
  2105. Return: CF clear
  2106.     BX = segment of first MCB in high memory
  2107.         0000h if no high memory
  2108.  
  2109. (Table 2803)
  2110. Values for calling QEMM QPI function 1300h:
  2111.     AX = 1300h VIDRAMEGA???
  2112.     BL = 00h copy ???
  2113.          nonzero copy ??? (reverse)
  2114. Return: CF clear
  2115.     AL = status
  2116.         00h if all pages clean
  2117.         01h if any page dirty
  2118.  
  2119. (Table 2804)
  2120. Values for calling QEMM QPI function 1301h:
  2121.     AX = 1301h check if pages modified
  2122.     DX:DI = start address of range to check
  2123.     CX = length of range in paragraphs
  2124. Return: CF clear
  2125.     CX = status
  2126.         0000h none of the indicated pages is dirty
  2127.         DI destroyed
  2128.         1000h one or more pages is dirty
  2129.         DI = low word of first dirty page's linear addr
  2130.  
  2131. (Table 2805)
  2132. Values for calling QEMM QPI function 1302h:
  2133.     AX = 1302h ???
  2134.     BL = ???
  2135.     BH = ???
  2136.     CX = ???
  2137.     SI = offset of ???
  2138.     DI = offset of ???
  2139.     ???
  2140. Return: CF clear
  2141.     ???
  2142. Note:    disables certain interrupts at the two 8259 PICs during
  2143.       execution; also modifies CRT controller during
  2144.       execution under certain circumstances
  2145.  
  2146. (Table 2806)
  2147. Values for calling QEMM QPI function 1303h:
  2148.     AX = 1303h initialize EGA graphics virtualization
  2149.     BX = number of pages (less 1) of EMS to allocate
  2150. Return: CF clear if successful
  2151.         DX = EMS handle
  2152.     CF set on error
  2153.  
  2154. (Table 2807)
  2155. Values for calling QEMM QPI function 1304h:
  2156.     AX = 1304h shutdown EGA graphics virtualization
  2157.     DX = EMS handle being used for virtualization
  2158. Return: CF clear
  2159.  
  2160. (Table 2808)
  2161. Values for calling QEMM QPI function 1305h:
  2162.     AX = 1305h select portion of EGA graphics to virtualize???
  2163.     (related to graphics virtualization, changes memory mappings)
  2164.     CX = start offset within A000h segment of virtualized mem???
  2165. Return: CF clear
  2166. Note:    disables certain interrupts at the two 8259 PICs during
  2167.       execution (see #2815) and runs inside a QEMM
  2168.       critical section
  2169.  
  2170. (Table 2809)
  2171. Values for calling QEMM QPI function 1306h:
  2172.     AX = 1306h set DESQview critical section counter address
  2173.     ES:BX -> WORD DESQview critical section counter or 0000h:0000h
  2174. Return: CF clear
  2175. Note:    also sets a pointer in the low-memory part of QEMM to
  2176.       the current value of INT 15 if ES:BX not 0000h:0000h
  2177.  
  2178. (Table 2810)
  2179. Values for calling QEMM QPI function 1307h:
  2180.     AX = 1307h ??? (changes memory mappings for entire A000h segment)
  2181. Return: CF clear
  2182. Note:    disables certain interrupts at the two 8259 PICs during
  2183.       execution (see #2815) and runs inside a QEMM
  2184.       critical section
  2185.  
  2186. (Table 2811)
  2187. Values for calling QEMM QPI function 1308h:
  2188.     AX = 1308h start/reset CRT controller I/O trapping
  2189.     BL = subfunction
  2190.         00h restore CRTC I/O port trapping to previous state
  2191.         else start trapping all accesses to I/O ports 03B0-03DF
  2192. Return: CF clear
  2193. Note:    if called more than once in a row with BL nonzero, the
  2194.       original state of the I/O port trapping will be lost
  2195.  
  2196. (Table 2812)
  2197. Values for calling QEMM QPI function 1309h:
  2198.     AX = 1309h Hercules mode-change support
  2199.     ES:BX -> new address for Hercules mode-change callback
  2200. Return: CF clear
  2201. Note:    the callback function is called whenever the CRTC mode
  2202.       register is written, with AL set to the value written
  2203.  
  2204. (Table 2813)
  2205. Values for calling QEMM QPI function 130Ah:
  2206.     AX = 130Ah virtualize EGA/VGA DAC registers (I/O ports 03C8h/03C9h)
  2207.     CX:DX -> DAC register virtualization buffer (see #2896)
  2208.         or 0000h:0000h to disable
  2209. Return: CF clear
  2210.  
  2211. (Table 2814)
  2212. Values for calling QEMM QPI function 130Bh:
  2213.     AX = 130Bh ???
  2214.     BL = ??? (??? or 00h)
  2215. Return: CF clear
  2216.     ???
  2217. Note:    calls AX=130Eh in some cases
  2218.  
  2219. (Table 2815)
  2220. Values for calling QEMM QPI function 130Ch:
  2221.     AX = 130Ch set interrupts to mask
  2222.     BX = interrupts to mask out during AX=1302h,AX=1307h,AX=1308h,
  2223.           AX=130Dh,AX=1310h (BL = master PIC, BH = slave PIC)
  2224. Return: CF clear
  2225.  
  2226. (Table 2816)
  2227. Values for calling QEMM QPI function 130Dh:
  2228.     AX = 130Dh map EGA memory at A0000h
  2229.     ???
  2230. Return: CF clear
  2231. Note:    disables certain interrupts at the two 8259 PICs during execution
  2232.       (see #2815) and runs inside a QEMM critical section
  2233.     calls AX=1307h (see #2810)
  2234.  
  2235. (Table 2817)
  2236. Values for calling QEMM QPI function 130Eh:
  2237.     AX = 130Eh ??? (modifies CRT controller setup)
  2238.     ???
  2239. Return: CF clear
  2240.  
  2241. (Table 2818)
  2242. Values for calling QEMM QPI function 130Fh:
  2243.     AX = 130Fh reset ???
  2244. Return: CF clear
  2245.  
  2246. (Table 2819)
  2247. Values for calling QEMM QPI function 1310h:
  2248.     AX = 1310h copy modified pages to physical video RAM???
  2249.     ???
  2250. Return: CF clear
  2251. Note:    disables certain interrupts at the two 8259 PICs during execution
  2252.       (see #2815) and runs inside a QEMM critical section
  2253.     also calls AX=130Dh (see #2816)
  2254.  
  2255. (Table 2820)
  2256. Values for calling QEMM QPI function 1311h:
  2257.     AX = 1311h set ???
  2258.     BL = zero/nonzero???
  2259. Return: CF clear
  2260. Note:    certain operations will be performed with interrupts
  2261.       (as set by AX=130Ch) enabled rather than disabled if
  2262.       called with BL nonzero
  2263.  
  2264. (Table 2821)
  2265. Values for calling QEMM QPI function 1312h:
  2266.     AX = 1312h (v6.02) NOP???
  2267. Note:    called by DV 2.42, but appears to be a NOP in QEMM 6.02
  2268.  
  2269. (Table 2822)
  2270. Values for calling QEMM QPI function 1400h:
  2271.     AX = 1400h initialize DESQview "protection level" support
  2272.     ES:DI -> protection level configuration (at least 24 bytes)
  2273.         (see #2890)
  2274.     BL = highest ??? to return (one less than number of words)
  2275. Return: CF clear
  2276.     AX = ??? (4204h for v6.00)
  2277. Note:    QEMM also sets the protected mode INT 02 and INT 06
  2278.       vectors to alternate handlers in certain cases
  2279.  
  2280. (Table 2823)
  2281. Values for calling QEMM QPI function 1401h:
  2282.     AX = 1401h turn off DESQview protection level support
  2283.         Return: CF clear
  2284.             ???
  2285.         Notes:    clears the DV critical-section flag address set with
  2286.               function 1306h
  2287.             QEMM also sets the protected mode INT 02 and INT 06
  2288.               vectors to the default handlers if they had been
  2289.               revectored by function 1400h
  2290.  
  2291. (Table 2824)
  2292. Values for calling QEMM QPI function 1402h:
  2293.     AX = 1402h set protection level???
  2294.         BL = protection level???
  2295.             00h NOP
  2296.             01h ???
  2297.             02h ???
  2298.             other (03h) ???
  2299.         ES:DI -> ???
  2300.         Return: CF clear
  2301.             ???
  2302.         Format of Data structure:
  2303.         Offset    Size    Description
  2304.          00h    WORD    segment of ??? (X, word at X:0136h set to X)
  2305.          02h    WORD    segment of ??? (word at X:0124h set to this)
  2306.          04h    WORD    number of paragraphs of ???
  2307.          06h  3 WORDs    ??? (copied to X:0000h)
  2308.          0Ch    WORD    ???
  2309.  
  2310. (Table 2825)
  2311. Values for calling QEMM QPI function 1403h:
  2312.     AX = 1403h add ??? to end of list and ??? (execute func 1406h)
  2313.         ES:DI -> ??? structure added to end of ??? list
  2314.             (at least 31 bytes, DWORD at offset 06h used for
  2315.              storing pointer to next struc, WORD at offset 00h
  2316.              seems to be a key or index)
  2317.         Return: CF clear
  2318.  
  2319. (Table 2826)
  2320. Values for calling QEMM QPI function 1404h:
  2321.     AX = 1404h NOP
  2322.         Return: CF clear
  2323.  
  2324. (Table 2827)
  2325. Values for calling QEMM QPI function 1405h:
  2326.     AX = 1405h remove ??? from ??? list
  2327.         BX = key???
  2328.         Return: CF clear
  2329.  
  2330. (Table 2828)
  2331. Values for calling QEMM QPI function 1406h:
  2332.     AX = 1406h ???
  2333.         ???
  2334.         Return: CF clear
  2335.             ???
  2336.         Notes:    this function is a NOP unless protection level 2 or 3
  2337.               is active
  2338.             when not a NOP, one of the actions is to write-protect
  2339.               certain memory pages
  2340.  
  2341. (Table 2829)
  2342. Values for calling QEMM QPI function 1407h:
  2343.     AX = 1407h ???
  2344.         ???
  2345.         Return: CF clear
  2346.             ???
  2347.         Note:    same as function 1406h, but only does anything if
  2348.               protection level 2 is active
  2349.  
  2350. (Table 2830)
  2351. Values for calling QEMM QPI function 1408h:
  2352.     AX = 1408h unprotect???
  2353.         ???
  2354.         Return: CF clear
  2355.             ???
  2356.  
  2357. (Table 2831)
  2358. Values for calling QEMM QPI function 1409h:
  2359.     AX = 1409h abort program causing protection violation???
  2360.         ???
  2361.         Return: CF clear
  2362.             ???
  2363.  
  2364. (Table 2832)
  2365. Values for calling QEMM QPI function 140Ah:
  2366.     AX = 140Ah set ???
  2367.         BX = index of ???
  2368.         Return: CF clear
  2369.             ???
  2370.         Notes:    no range checking is performed on BX
  2371.             this function is a NOP unless protection level 3 active
  2372.  
  2373. (Table 2833)
  2374. Values for calling QEMM QPI function 140Bh:
  2375.     AX = 140Bh get ???
  2376.         BX = index of ???
  2377.         SI = 0000h
  2378.         Return: CF clear
  2379.             SI = segment of 256-byte buffer??? or 0000h
  2380.         Notes:    no range checking is performed on BX
  2381.             this function is a NOP unless protection level 3 active
  2382.  
  2383. (Table 2834)
  2384. Values for calling QEMM QPI function 15h:
  2385.     AH = 15h set timer channel 0 virtualization buffer
  2386.         ES:BX -> WORD buffer for timer channel 0 divisor
  2387.             0000h:0000h to disable virtualization
  2388.         Return: CF clear
  2389.  
  2390. (Table 2835)
  2391. Values for calling QEMM v5.00+ QPI function 1600h:
  2392.     AX = 1600h get memory access status
  2393.         ES:DI -> 256-byte buffer
  2394.         Return: ES:DI buffer filled
  2395.         Note:    each byte of the buffer indicates the status of a 4K
  2396.               page (bit 0 set if read, bit 1 set if written)
  2397.  
  2398. (Table 2836)
  2399. Values for calling QEMM v5.00+ QPI function 1601h:
  2400.     AX = 1601h set memory access status
  2401.         ES:DI -> 256-byte buffer containing access statuses (see #2835)
  2402.  
  2403. (Table 2837)
  2404. Values for calling QEMM v5.00+ QPI function 17h:
  2405.     AH = 17h get memory usage statistics
  2406.         ES:DI -> 81-byte buffer for memory statistics (see #2894)
  2407.         Return: CF clear
  2408.  
  2409. (Table 2838)
  2410. Values for calling QEMM v5.11+ QPI function 18h:
  2411.     AH = 18h check whether conventional memory mapped into address range
  2412.         ES:BX = starting address
  2413.         CX = number of 4K pages
  2414.         Return: CF clear
  2415.             AL = 00h one or more pages is remapped
  2416.                  01h all pages in range are conventional memory
  2417.                 (physical address == virtual address)
  2418.  
  2419. (Table 2839)
  2420. Values for calling QEMM v5.11+ QPI function 19h:
  2421.     AH = 19h NOP
  2422.         Return: CF set
  2423.  
  2424. (Table 2840)
  2425. Values for calling QEMM v5.11+ "QPI_UntrappedIORead" function:
  2426.     AX = 1A00h get byte from I/O port
  2427.     DX = port number
  2428. Return: CF clear
  2429.     BL = port value
  2430. Note:    this function was officially documented with the release of QEMM 7.50
  2431.  
  2432. (Table 2841)
  2433. Values for calling QEMM v5.11+ "QPI_UntrappedIOWrite" function:
  2434.     AX = 1A01h send byte to I/O port
  2435.     BL = value to send
  2436.     DX = port number
  2437. Return: CF clear
  2438. Note:    this function was officially documented with the release of QEMM 7.50
  2439.  
  2440. (Table 2842)
  2441. Values for calling QEMM v5.11+ "QPI_UntrappedIOReadIndexed" function:
  2442.     AX = 1A02h
  2443.     BH = index value to send
  2444.     DX = base port number
  2445. Return: CF clear
  2446.     BL = value read from I/O port (DX+1)
  2447. Note:    this function was officially documented with the release of QEMM 7.50
  2448.  
  2449. (Table 2843)
  2450. Values for calling QEMM v5.11+ "QPI_UntrappedIOWriteIndexed" function:
  2451.     AX = 1A03h send bytes to two consecutive I/O ports
  2452.     BH = value for first I/O port (DX)
  2453.     BL = value for second I/O port (DX+1)
  2454.     DX = base port number
  2455. Return: CF clear
  2456. Note:    this function was officially documented with the release of QEMM 7.50
  2457.  
  2458. (Table 2844)
  2459. Values for calling QEMM v7.03+ "QPI_UntrappedIO" function:
  2460.     AX = 1A04h
  2461.     BX = value to write to port
  2462.     CX = direction and size
  2463.         bit 2: output instead of input
  2464.         bit 3: word instead of byte
  2465.     DX = I/O port to be accessed
  2466. Return: CF clear
  2467.     BX = value read (if CX indicates read)
  2468. Note:    this function was officially documented with the release of QEMM 7.50
  2469.  
  2470. (Table 2845)
  2471. Values for calling QEMM v7.03+ function 1A05h
  2472.     AX = 1A05h
  2473.     ???
  2474. Return: ???
  2475.  
  2476. (Table 2846)
  2477. Values for calling QEMM v7.03+ "QPI_GetIOCallback" function:
  2478.     AX = 1A06h
  2479. Return: CF clear
  2480.     ES:DI -> current I/O callback function (see #2848)
  2481. Note:    this function was officially documented with the release of QEMM 7.50
  2482.  
  2483. (Table 2847)
  2484. Values for calling QEMM v7.03+ "QPI_SetIOCallback" function:
  2485.     AX = 1A07h
  2486.     ES:DI -> new I/O callback function (see #2848)
  2487. Return: CF clear
  2488. Note:    this function was officially documented with the release of QEMM 7.50
  2489.  
  2490. (Table 2848)
  2491. Values QEMM v7.03+ I/O callback function is called with:
  2492.     AL/AX = data to/from trapped port
  2493.     CL = I/O direction (00h = IN instruction, else OUT instruction)
  2494.     DX = I/O port address
  2495. Return: CF clear if port handled by callback function
  2496.     CF set if not handled
  2497.     all other registers returned to application executing the IN or OUT
  2498.       instruction (allowing arbitrary changes to port address, data value,
  2499.       etc.)
  2500. SeeAlso: #2846,#2847
  2501.  
  2502. (Table 2849)
  2503. Values for calling QEMM v7.03+ "QPI_GetPortTrap" function:
  2504.     AX = 1A08h
  2505.     DX = I/O port number
  2506. Return: CF clear
  2507.     BL = trapping state (00h not being trapped, 01h trap installed)
  2508. Note:    this function was officially documented with the release of QEMM 7.50
  2509.  
  2510. (Table 2850)
  2511. Values for calling QEMM v7.03+ "QPI_SetPortTrap" function:
  2512.     AX = 1A09h
  2513.     DX = I/O port number
  2514. Return: CF clear
  2515. Note:    this function was officially documented with the release of QEMM 7.50
  2516.  
  2517. (Table 2851)
  2518. Values for calling QEMM v7.03+ "QPI_ClearPortTrap" function:
  2519.     AX = 1A0Ah
  2520.     DX = I/O port number
  2521. Return: CF clear
  2522. Note:    this function was officially documented with the release of QEMM 7.50
  2523.  
  2524. (Table 2852)
  2525. Values for calling QEMM v5.11+ QPI function 1B00h:
  2526.     AX = 1B00h get EMM Import Structure address
  2527.     ES:DI -> buffer for EMM import data structure (see #2892)
  2528. Return: CF set on error
  2529.     CF clear if successful
  2530. SeeAlso: INT 21/AX=4402h/SF=01h
  2531.  
  2532. (Table 2853)
  2533. Values for calling QEMM v5.11+ QPI function 1B01h:
  2534.     AX = 1B01h disable V86 mode
  2535. Return: CF set on error
  2536.         (i.e. no Global EMM Import rec. allocated)
  2537.     CF clear if successful
  2538. Note:    shuts down EMS and initializes Global EMM Import record; this function
  2539.       is invoked from the callback supplied by INT 2F/AX=1605h
  2540.  
  2541. (Table 2854)
  2542. Values for calling QEMM v5.11+ QPI function 1B02h:
  2543.     AX = 1B02h enable V86 mode
  2544. Return: CF set on error
  2545.     CF clear if successful
  2546. Note:    restarts EMS and frees Global EMM Import record; this function is
  2547.       invoked from the callback supplied by INT 2F/AX=1605h
  2548.  
  2549. (Table 2855)
  2550. Values for calling QEMM v5.11+ QPI function 1B03h:
  2551.     AX = 1B03h MS Windows initializing
  2552.     CX = segment from which Windows init broadcast made???
  2553.     DX = Windows startup flags
  2554.     DI = Windows version number (major in upper byte)
  2555. Return: CF clear if successful
  2556.         DS:SI -> V86 mode enable/disable callback
  2557.           (see #1962 at INT 2F/AX=1605h)
  2558.         ES:BX -> startup info structure (see #1959 at INT 2F/AX=1605h)
  2559.     CF set on error (unable to start Windows)
  2560. SeeAlso: INT 2F/AX=1605h
  2561.  
  2562. (Table 2856)
  2563. Values for calling QEMM v5.11+ QPI function 1B04h:
  2564.     AX = 1B04h MS Windows terminating
  2565. Return: CF clear
  2566.  
  2567. (Table 2857)
  2568. Values for calling QEMM v5.11+ QPI function 1B05h:
  2569.     AX = 1B05h determine whether program is driver
  2570.     DS:DX -> ASCIZ filename
  2571. Return: CF clear
  2572.     AL = status
  2573.         01h if string ends in ".DRV"
  2574.         FFh if string ends in "GDI.EXE"
  2575.         00h otherwise
  2576. Note:    when MS Windows 3.0 standard mode starts, QEMM patches all drivers
  2577.       until GDI.EXE is loaded
  2578.  
  2579. (Table 2858)
  2580. Values for calling QEMM v5.11+ QPI function 1B06h:
  2581.     AX = 1B06h patch protected-mode check in Windows driver
  2582.     CX = length of data pointed at by DS:DX
  2583.     DS:DX -> buffer containing Windows driver code
  2584. Return: CF clear
  2585. Note:    patches all SMSW x/TEST x,1 instruction sequences into MOV x,CS/VERW x
  2586.       sequences, which has the effect that the protected-mode check will
  2587.       only indicate protected mode in native protected mode and not in V86
  2588.       mode
  2589.  
  2590. (Table 2859)
  2591. Values for calling QEMM v5.11+ QPI function 1B07h:
  2592.     AX = 1B07h
  2593. BUG: QEMM 6.00-7.01 accept this and branch randomly
  2594.  
  2595. (Table 2860)
  2596. Values for calling QEMM v5.11+ QPI function 1Bxxh:
  2597.     AX = 1B08h to 1BFFh
  2598. Return: CF set
  2599.  
  2600. (Table 2861)
  2601. Values for calling QEMM v5.11+ QPI function 1C00h:
  2602.     AX = 1C00h disable IRQ0-7 calldowns
  2603. Return: CF clear
  2604.  
  2605. (Table 2862)
  2606. Values for calling QEMM v5.11+ QPI function 1C01h:
  2607.     AX = 1C01h set V86-mode IRQ0-7 handlers
  2608.     ES:DI -> 8 DWORDs containing V86-mode handler addresses
  2609. Return: CF clear
  2610.  
  2611. (Table 2863)
  2612. Values for calling QEMM v5.11+ QPI function 1C02h:
  2613.     AX = 1C02h disable IRQ8-15 handlers
  2614. Return: CF clear
  2615.  
  2616. (Table 2864)
  2617. Values for calling QEMM v5.11+ QPI function 1C03h:
  2618.     AX = 1C03h set V86-mode IRQ8-15 handlers
  2619.     ES:DI -> 8 DWORDs containing V86-mode handler addresses
  2620. BUG:    although the jump table only contains four entries, QEMM 6.00 will
  2621.       attempt to use it for any value of AL between 00h and 2Ah, thus
  2622.       branching unpredictably for AL=04h-2Ah; QEMM v7.01 behaves
  2623.       similarly for AL=04h-1Bh
  2624. Note:    when enabled, the appropriate IRQs are reflected back to the specified
  2625.       handlers in virtual-86 mode after the CPU automatically invokes the
  2626.       protected-mode handler inside QEMM
  2627.  
  2628. (Table 2865)
  2629. Values for calling QEMM v7.03+ "QPI_SimulateHWInt" function:
  2630.     AX = 1C04h
  2631.     BX = number of interrupt to simulate
  2632. Return: ???
  2633. Notes:    this function will allow proper simulation of a hardware interrupt
  2634.       under DESQview and DESQview/X, where the correct interrupt handler
  2635.       may be in a different process with a completely different address
  2636.       space
  2637.     this function was officially documented with the release of QEMM v7.50
  2638.  
  2639. (Table 2866)
  2640. Values for calling QEMM v6.0x only QPI function 1D00h:
  2641.     AX = 1D00h switch to pre-Stealth interrupt vector table
  2642. Return: CF clear if supported (QEMM v6.x)
  2643.     CF set if not supported (QEMM v7+)
  2644. Notes:    also switches VGA Save table pointer (0040h:00A8h) and overwrites the
  2645.       vectors currently assigned for use by the two interrupt controllers
  2646.       (see INT 67/AX=DE0Ah) with the vectors for INT 08-0F and 70-77 (to
  2647.       avoid crashing the system).
  2648.     functions 1Dxxh are not supported by QEMM v7.01, and always return CF
  2649.       set
  2650.  
  2651. (Table 2867)
  2652. Values for calling QEMM v6.0x only QPI function 1D01h:
  2653.     AX = 1D01h restore user interrupt vector table
  2654. Return: CF clear if supported (QEMM v6.x)
  2655.     CF set if not supported (QEMM v7+)
  2656. Notes:    interrupts should be disabled around the AX=1D00h and AX=1D01h calls
  2657.       because QEMM does not modify the memory maps to map in ROM, so
  2658.       an interrupt could be disastrous
  2659.     clears any pending IRQ7 at end of function
  2660.     functions 1Dxxh are not supported by QEMM v7.01, and always return CF
  2661.       set
  2662.  
  2663. (Table 2868)
  2664. Values for calling QEMM v6.00+ QPI function 1Dxxh:
  2665.     AX = 1D02h to 1DFFh
  2666. Return: CF set
  2667.  
  2668. (Table 2869)
  2669. Values for calling QEMM v6.00+ "QEMM_GET_INFO"/"QPI_GetInfo" function:
  2670.     AX = 1E00h get Stealth configuration
  2671. Return: CF clear
  2672.     BL = memory configuration flags (documented as "reserved") (see #2893)
  2673.     BH = (v7.00+) disk buffer flags
  2674.         bit 0: DISKBUFFRAME buffer instead of DISKBUF buffer
  2675.         bit 1: buffer has already been used
  2676.     CL = stealth type (00h none, 46h Frame, 4Dh Map, 50h Protect)
  2677.     CH = suspend/resume interrupt (00h none)
  2678.     DL = (v7.00+) size of QEMM disk buffer in KB (00h none)
  2679.     DH = reserved (always 00h for v6.00)
  2680.     SI = reserved (always 0000h for v6.00)
  2681.     DI = reserved (always 0000h for v6.00)
  2682. Note:    this function is officially documented
  2683.  
  2684. (Table 2870)
  2685. Values for calling QEMM v6.00+ "QPI_GetStealthCount" function:
  2686.     AX = 1E01h get number of Stealth'ed ROMs
  2687. Return: CF clear
  2688.     BX = number of Stealth'ed ROMs
  2689. Note:    this function is officially documented
  2690.  
  2691. (Table 2871)
  2692. Values for calling QEMM v6.00+ "QPI_GetStealthList" function:
  2693.     AX = 1E02h
  2694.     ES:DI -> buffer for Stealth ROM info (see #2895)
  2695. Return: CF clear
  2696.     BX = number of Stealth'ed ROMs
  2697.     ES:DI buffer filled
  2698. Note:    this function is officially documented
  2699.  
  2700. (Table 2872)
  2701. Values for unimplemented Stealth information functions:
  2702.     AX = 1E03h to 1EFFh
  2703. Return: CF set
  2704.  
  2705.  
  2706. (Table 2873)
  2707. Values for calling QEMM v6.00+ "QEMM_GET_PTE"/"QPI_GetPTE" function:
  2708.     AX = 1F00h get page table entry
  2709.     CX = page number (0000h-010Fh)
  2710. Return: CF clear
  2711.     EDX = page table entry
  2712. Note:    this function is officially documented
  2713.  
  2714. (Table 2874)
  2715. Values for calling QEMM v6.00+ "QEMM_SET_PTE"/"QPI_SetPTE" function:
  2716.     AX = 1F01h set page table entry
  2717.     CX = page number (0000h-010Fh)
  2718.     EDX = new page table entry
  2719. Return: CF clear
  2720. Note:    this function is officially documented
  2721. SeeAlso: #2798
  2722.  
  2723. (Table 2875)
  2724. Values for calling QEMM v6.00+ QPI function 1Fxxh:
  2725.     AX = 1F02h to 1FFFh
  2726. Return: CF set
  2727.  
  2728. (Table 2876)
  2729. Values for calling QEMM v6.00+ "QEMM_GET_VHI_INFO"/"QPI_GetVHIInfo" function:
  2730.     AX = 2000h "QEMM_GET_VHI_INFO" get VirtualHDIRQ information
  2731. Return: CF clear
  2732.     BL = flags
  2733.         bit 7: VirtualHDIRQ setting respected
  2734.           (set if Stealth active)
  2735.         bits 6-1 reserved
  2736.         bit 0: VirtualHDIRQ currently enabled
  2737.         (INT 15/AH=90h suppressed when enabled)
  2738. Note:    this function is officially documented
  2739. SeeAlso: #2877
  2740.  
  2741. (Table 2877)
  2742. Values for calling QEMM v6.00+ "QEMM_SET_VHI_INFO"/"QPI_SetVHIInfo" function:
  2743.     AX = 2001h set VirtualHDIRQ state
  2744.     BL bit 0 = new VirtualHDIRQ state
  2745. Return: CF clear
  2746.     BL = old VHI setting (bits 0 and 7, see #2876)
  2747. Note:    this function is officially documented
  2748. SeeAlso: #2876
  2749.  
  2750. (Table 2878)
  2751. Values for calling QEMM v6.00+ QPI function 20xxh:
  2752.     AX = 2002h to 20FFh
  2753. Return: CF set
  2754.  
  2755. (Table 2879)
  2756. Values for calling QEMM v6.00+ "QEMM_COPY_STEALTH_ROMS"/"QPI_CopyStealthRoms":
  2757.     AX = 2100h copy data from Stealthed address space
  2758.     DS:SI -> start address of hidden memory to copy
  2759.     ES:DI -> buffer for copied data
  2760.     ECX = number of bytes to copy
  2761. Return: CF clear if successful
  2762.     CF set on error (no Stealth or DS:SI < C000h:0000h or DS:SI + ECX > 1M)
  2763. Note:    this function was officially documented with the release of QEMM 7.50
  2764.  
  2765. (Table 2880)
  2766. Values for calling QEMM v6.00+ QPI function 21xxh:
  2767.     AX = 2101h to 21FFh
  2768. Return: CF set
  2769.  
  2770. (Table 2881)
  2771. Values for calling QEMM v6.03+ QPI function 2200h:
  2772.     AX = 2200h DESQview/X support -- get ???
  2773. Return: CF clear
  2774.     ES:DI -> ???
  2775.  
  2776. (Table 2882)
  2777. Values for calling QEMM v6.03+ QPI function 2201h:
  2778.     AX = 2201h DESQview/X support -- set ???
  2779.     ES:DI -> ??? or 0000h:0000h
  2780. Return: CF clear if successful
  2781.     CF set on error
  2782.  
  2783. (Table 2883)
  2784. Values for calling QEMM v6.04+ QPI function 2300h:
  2785.     AX = 2300h get ???
  2786.     BX = which ??? to get (must be 0000h for v6.04)
  2787. Return: CF clear if successful
  2788.         ES:DI -> ???
  2789.     CF set on error
  2790.  
  2791. (Table 2884)
  2792. Values for calling QEMM v6.04+ QPI function 2301h:
  2793.     AX = 2301h set ???
  2794.     BX = which ??? to set (must be 0000h for v6.04)
  2795.     ES:DI -> ???
  2796. Return: CF clear if successful
  2797.     CF set on error
  2798.  
  2799. (Table 2885)
  2800. Values for calling QEMM v6.04+ QPI function 2302h:
  2801.     AX = 2302h clear specified ???
  2802.     BX = which ??? to clear (must be 0000h for v6.04)
  2803. Return: CF clear if successful
  2804.     CF set on error
  2805.  
  2806. (Table 2886)
  2807. Values for calling QEMM v6.04+ QPI function 23FFh:
  2808.     AX = 23FFh clear all ???
  2809. Return: CF clear if successful
  2810.     CF set on error
  2811.  
  2812. (Table 2887)
  2813. Values for calling QEMM v6.04+ QPI function 23xxh:
  2814.     AX = 2303h to 23FEh
  2815. Return: CF set
  2816.  
  2817. (Table 2888)
  2818. Values for calling QEMM v7.01+ QPI function 24h:
  2819.     AH = 24h ST-DBL support
  2820.     AL = subfunction
  2821.         00h set ???
  2822.         EDX -> information table (EDX = segment SHL 16 + offset)
  2823.         01h ???
  2824. Return: CF clear if successful
  2825.     CF set on error
  2826.  
  2827. (Table 2889)
  2828. Values for calling QEMM unimplemented QPI functions:
  2829.     AH = 25h to FFh
  2830. Return: CF set
  2831.  
  2832. Format of QEMM protection level configuration:
  2833. Offset    Size    Description    (Table 2890)
  2834.  00h    WORD    segment of 128 breakpoint (INT 3) instructions for use in
  2835.           DESQview protection level 3 interrupt vector checking, or
  2836.           0000h to disable; in pl3, INTs 00-7F are pointed at these
  2837.           breakpoints
  2838.  02h    DWORD    -> array of actual interrupt handler addresses for INT 00-7F
  2839.           when interrupt vectors are pointed at protection level 3
  2840.           breakpoints
  2841.  06h    DWORD    far pointer to ??? region list (see #2891)
  2842.  0Ah    DWORD    far pointer to buffer for returned ???
  2843.  0Eh    DWORD    seg:ofs of function to call on protection violation???
  2844.  12h    WORD    segment of ???
  2845.  14h    DWORD    far pointer to DWORD containing number of paragraphs of
  2846.           ??? for segment at offset 12h
  2847.     ???
  2848.  
  2849. Format of protection level Region List:
  2850. Offset    Size    Description    (Table 2891)
  2851.  00h    WORD    number of PAIRS of pointers to follow
  2852.  02h 2N DWORDs    start/end seg:ofs addresses of ??? regions
  2853. Note:    QEMM converts the segmented addresses into linear addresses in place
  2854.  
  2855. Format of EMM Import structure:
  2856. Offset    Size    Description    (Table 2892)
  2857.  00h    DWORD    physical address of EMM import struct
  2858.  04h    BYTE    major version (v6.00 sets to 01h)
  2859.  05h    BYTE    minor version (v6.00 sets to 00h/0Bh)
  2860. SeeAlso: INT 21/AX=4402h/SF=01h
  2861.  
  2862. Bitfields for memory configuration flags:
  2863. Bit(s)    Description    (Table 2893)
  2864.  0    conventional memory sorted
  2865.  1    conventional memory filled
  2866.  2    ???
  2867.  3    ???
  2868.  4    expanded memory is in use
  2869.  5    ???
  2870.  
  2871. Format of QEMM 6.0 memory statistics:
  2872. Offset    Size    Description    (Table 2894)
  2873.  00h    BYTE    01h if Shadow RAM found, 00h otherwise
  2874.  01h    DWORD    initial conventional memory in bytes
  2875.  05h    DWORD    initial extended memory in bytes
  2876.  09h    DWORD    initial expanded memory in bytes
  2877.  0Dh    DWORD    initial "top" or "shadow" memory in bytes
  2878.  11h    DWORD    Unavailable conventional memory in bytes
  2879.  15h    DWORD    Unavailable extended memory in bytes
  2880.  19h    DWORD    Unavailable expanded memory in bytes
  2881.  1Dh    DWORD    Unavailable "top" or "shadow" memory in bytes
  2882.         Add to offset 49h for Total unavailable top/shadow.
  2883.  21h    DWORD    QEMM code size in bytes
  2884.  25h    DWORD    QEMM data size in bytes
  2885.  29h    DWORD    bytes used for TASKS=
  2886.  2Dh    DWORD    DMA buffer size
  2887.  31h    DWORD    bytes used for MAPS=
  2888.  35h    DWORD    bytes of high RAM
  2889.  39h    DWORD    bytes used by mapped ROMs
  2890.  3Dh    DWORD    bytes of conventional memory provided by QEMM
  2891.  41h    DWORD    bytes of extended memory NOT converted by QEMM (EXT=xxx)
  2892.  45h    DWORD    bytes of EMS/XMS pool memory provided by QEMM
  2893.  49h    DWORD    Unavailable "top" or "shadow" memory in bytes
  2894.         Add to offset 1Dh for Total unavailable top/shadow.
  2895.  4Dh    DWORD    conventional memory overhead in bytes
  2896.         (set to 0 by QEMM.COM prior to call)
  2897.  
  2898. Format of Stealth ROM info [array]:
  2899. Offset    Size    Description    (Table 2895)
  2900.  00h    WORD    starting segment of ROM
  2901.  02h    WORD    length of ROM in paragraphs
  2902.  
  2903. Format of QEMM EGA/VGA DAC register virtualization buffer:
  2904. Offset    Size    Description    (Table 2896)
  2905.  00h    BYTE    (temp) current color register number
  2906.  01h    BYTE    (temp) number of bytes written so far for current color reg
  2907.  02h 768 BYTEs    three bytes per color register
  2908. --------m-6740-------------------------------
  2909. INT 67 - LIM EMS - GET MANAGER STATUS
  2910.     AH = 40h
  2911. Return: AH = status (00h,80h,81h,84h) (see #2897)
  2912. Note:    this call can be used only after establishing that the EMS driver is in
  2913.       fact present
  2914. SeeAlso: AH=3Fh,AX=FFA5h
  2915.  
  2916. (Table 2897)
  2917. Values for EMS function status:
  2918.  00h    successful
  2919.  80h    internal error
  2920.  81h    hardware malfunction
  2921.  83h    invalid handle
  2922.  84h    undefined function requested by application
  2923.  85h    no more handles available
  2924.  86h    error in save or restore of mapping context
  2925.  87h    insufficient memory pages in system
  2926.  88h    insufficient memory pages available
  2927.  89h    zero pages requested
  2928.  8Ah    invalid logical page number encountered
  2929.  8Bh    invalid physical page number encountered
  2930.  8Ch    page-mapping hardware state save area is full
  2931.  8Dh    save of mapping context failed
  2932.  8Eh    restore of mapping context failed
  2933.  8Fh    undefined subfunction
  2934.  90h    undefined attribute type
  2935.  91h    feature not supported
  2936.  92h    successful, but a portion of the source region has been overwritten
  2937.  93h    length of source or destination region exceeds length of region
  2938.       allocated to either source or destination handle
  2939.  94h    conventional and expanded memory regions overlap
  2940.  95h    offset within logical page exceeds size of logical page
  2941.  96h    region length exceeds 1M
  2942.  97h    source and destination EMS regions have same handle and overlap
  2943.  98h    memory source or destination type undefined
  2944.  9Ah    specified alternate map register or DMA register set not supported
  2945.  9Bh    all alternate map register or DMA register sets currently allocated
  2946.  9Ch    alternate map register or DMA register sets not supported
  2947.  9Dh    undefined or unallocated alternate map register or DMA register set
  2948.  9Eh    dedicated DMA channels not supported
  2949.  9Fh    specified dedicated DMA channel not supported
  2950.  A0h    no such handle name
  2951.  A1h    a handle found had no name, or duplicate handle name
  2952.  A2h    attempted to wrap around 1M conventional address space
  2953.  A3h    source array corrupted
  2954.  A4h    operating system denied access
  2955. --------m-6741-------------------------------
  2956. INT 67 - LIM EMS - GET PAGE FRAME SEGMENT
  2957.     AH = 41h
  2958. Return: AH = status (see also AH=40h)
  2959.         00h function successful
  2960.         BX = segment of page frame
  2961. SeeAlso: AH=58h,AH=68h
  2962. --------m-6742-------------------------------
  2963. INT 67 - LIM EMS - GET NUMBER OF PAGES
  2964.     AH = 42h
  2965. Return: AH = status (see also AH=40h)
  2966.         00h function successful
  2967.         BX = number of unallocated pages
  2968.         DX = total number of pages
  2969. BUG:    DOS 6.0 EMM386.EXE causes a system lock-up or reboot if in AUTO mode
  2970.       when this call is made; use AH=46h to ensure that EMM386 is ON
  2971.       before making this call
  2972. SeeAlso: INT 2F/AX=2702h
  2973. --------m-6743-------------------------------
  2974. INT 67 - LIM EMS - GET HANDLE AND ALLOCATE MEMORY
  2975.     AH = 43h
  2976.     BX = number of logical pages to allocate
  2977. Return: AH = status (00h,80h,81h,84h,85h,87h,88h,89h) (see #2897)
  2978.     DX = handle if AH=00h
  2979. SeeAlso: AH=45h
  2980. --------u-674321-----------------------------
  2981. INT 67 - Q87 v4+ - INSTALLATION CHECK
  2982.     AX = 4321h
  2983.     EAX = 87654321h (entire EAX value required)
  2984. Return: EAX = 12345678h if Q87 is installed
  2985. Note:    this call requires that VCPI services be available; if they are not,
  2986.       this call will not be recognized
  2987. BUG:    v4.00-v4.03 will hang on most machines when run under bare DOS with
  2988.       no memory manager, because neither Q87 nor UNLOAD87 checks whether
  2989.       there is a valid INT 67 handler before performing an installation
  2990.       check via INT 67
  2991. SeeAlso: AX=2833h,INT 21/AX=4321h
  2992. --------m-6744-------------------------------
  2993. INT 67 - LIM EMS - MAP MEMORY
  2994.     AH = 44h
  2995.     AL = physical page number (0-3)
  2996.     BX = logical page number
  2997.         or FFFFh to unmap (QEMM)
  2998.     DX = handle
  2999. Return: AH = status (00h,80h,81h,83h,84h,8Ah,8Bh) (see #2897)
  3000. SeeAlso: AH=69h
  3001. --------m-6745-------------------------------
  3002. INT 67 - LIM EMS - RELEASE HANDLE AND MEMORY
  3003.     AH = 45h
  3004.     DX = EMM handle
  3005. Return: AH = status (00h,80h,81h,83h,84h,86h) (see #2897)
  3006. SeeAlso: AH=43h
  3007. --------m-6746-------------------------------
  3008. INT 67 - LIM EMS - GET EMM VERSION
  3009.     AH = 46h
  3010. Return: AH = status (00h,80h,81h,84h) (see #2897)
  3011.     AL = EMM version number if AH=00h
  3012. --------m-6747-------------------------------
  3013. INT 67 - LIM EMS - SAVE MAPPING CONTEXT
  3014.     AH = 47h
  3015.     DX = handle
  3016. Return: AH = status (00h,80h,81h,83h,84h,8Ch-8Eh) (see #2897)
  3017. SeeAlso: AH=48h
  3018. --------m-6748-------------------------------
  3019. INT 67 - LIM EMS - RESTORE MAPPING CONTEXT
  3020.     AH = 48h
  3021.     DX = handle
  3022. Return: AH = status (00h,80h,81h,83h,84h,8Eh) (see #2897)
  3023. SeeAlso: AH=47h
  3024. --------m-6749-------------------------------
  3025. INT 67 - LIM EMS - reserved - GET I/O PORT ADDRESSES
  3026.     AH = 49h
  3027. Note:    defined in EMS 3.0, but undocumented in EMS 3.2
  3028. --------m-674A-------------------------------
  3029. INT 67 - LIM EMS - reserved - GET TRANSLATION ARRAY
  3030.     AH = 4Ah
  3031. Note:    defined in EMS 3.0, but undocumented in EMS 3.2
  3032. --------m-674B-------------------------------
  3033. INT 67 - LIM EMS - GET NUMBER OF EMM HANDLES
  3034.     AH = 4Bh
  3035. Return: AH = status (00h,80h,81h,83h,84h) (see #2897)
  3036.     BX = number of EMM handles if AH=00h
  3037. --------m-674C-------------------------------
  3038. INT 67 - LIM EMS - GET PAGES OWNED BY HANDLE
  3039.     AH = 4Ch
  3040.     DX = EMM handle
  3041. Return: AH = status (see #2065)
  3042.     BX = number of logical pages if AH=00h
  3043. SeeAlso: AH=4Dh
  3044. --------m-674D-------------------------------
  3045. INT 67 - LIM EMS - GET PAGES FOR ALL HANDLES
  3046.     AH = 4Dh
  3047.     ES:DI -> array to receive information
  3048. Return: AH = status (00h,80h,81h,84h) (see #2897)
  3049.     ---if AH=00h---
  3050.     BX = number of active EMM handles
  3051.     array filled with 2-word entries, consisting of a handle and the
  3052.       number of pages allocated to that handle
  3053. SeeAlso: AH=4Ch
  3054. --------m-674E-------------------------------
  3055. INT 67 - LIM EMS - GET OR SET PAGE MAP
  3056.     AH = 4Eh
  3057.     AL = subfunction
  3058.         00h get mapping registers
  3059.         01h set mapping registers
  3060.         02h get and set mapping registers at once
  3061.         03h get size of page-mapping array
  3062.     DS:SI -> array holding information (AL=01h/02h)
  3063.     ES:DI -> array to receive information (AL=00h/02h)
  3064. Return: AH = status (00h,80h,81h,84h,8Fh,A3h) (see also AH=40h)
  3065.         00h successful
  3066.         AL = bytes in page-mapping array (AL=03h only)
  3067.         array pointed to by ES:DI receives mapping info (AL=00h/02h)
  3068. Notes:    this function was designed to be used by multitasking operating systems
  3069.       and should not ordinarily be used by appplication software.
  3070.     MD386 returns the size of the page-mapping array in AX instead of AL
  3071. SeeAlso: AH=4Fh
  3072. --------m-674F-------------------------------
  3073. INT 67 - LIM EMS 4.0 - GET/SET PARTIAL PAGE MAP
  3074.     AH = 4Fh
  3075.     AL = subfunction
  3076.         00h get partial page map
  3077.            DS:SI -> structure containing list of segments whose mapping
  3078.             contexts are to be saved
  3079.            ES:DI -> array to receive page map
  3080.         01h set partial page map
  3081.            DS:SI -> structure containing saved partial page map
  3082.         02h get size of partial page map
  3083.            BX = number of mappable segments in the partial map to be saved
  3084. Return: AH = status (00h,80h,81h,84h,8Bh,8Fh,A3h) (see also AH=40h)
  3085.         8Bh one of the specified segments is not mappable
  3086.         A3h contents of partial page map corrupted or count of mappable
  3087.         segments exceeds total number of mappable segments in system
  3088.     AL = size of partial page map for subfunction 02h
  3089. SeeAlso: AH=4Eh
  3090. --------m-6750-------------------------------
  3091. INT 67 - LIM EMS 4.0 - MAP/UNMAP MULTIPLE HANDLE PAGES
  3092.     AH = 50h
  3093.     AL = subfunction
  3094.         00h use physical page numbers
  3095.         01h use segment addresses
  3096.     DX = handle
  3097.     CX = number of entries in array
  3098.     DS:SI -> mapping array (see #2898)
  3099. Return: AH = status (00h,80h,81h,83h,84h,8Ah,8Bh,8Fh) (see #2897)
  3100. SeeAlso: AH=40h
  3101.  
  3102. Format of EMS mapping array entry:
  3103. Offset    Size    Description    (Table 2898)
  3104.  00h    WORD    logical page number or FFFFh to unmap physical page
  3105.  02h    WORD    physical page number or segment address
  3106. --------m-6751-------------------------------
  3107. INT 67 - LIM EMS 4.0 - REALLOCATE PAGES
  3108.     AH = 51h
  3109.     DX = handle
  3110.     BX = number of pages to be allocated to handle
  3111. Return: AH = status (00h,80h,81h,83h,84h,87h,88h) (see #2899)
  3112.     BX = actual number of pages allocated to handle
  3113.  
  3114. (Table 2899)
  3115. Values for EMS function status:
  3116.  00h    successful
  3117.  80h    internal error
  3118.  81h    hardware malfunction
  3119.  83h    invalid handle
  3120.  84h    undefined function requested
  3121.  87h    more pages requested than present in system
  3122.  88h    more pages requested than currently available
  3123.  8Ah    invalid logical page number encountered
  3124.  8Bh    invalid physical page number encountered
  3125.  8Fh    undefined subfunction
  3126.  90h    undefined attribute type
  3127.  91h    feature not supported
  3128.  A0h    no such handle name
  3129.  A1h    duplicate handle name
  3130. --------m-6752-------------------------------
  3131. INT 67 - LIM EMS 4.0 - GET/SET HANDLE ATTRIBUTES
  3132.     AH = 52h
  3133.     AL = subfunction
  3134.         00h get handle attributes
  3135.         Return: AL = attribute
  3136.                 00h handle is volatile
  3137.                 01h handle is nonvolatile
  3138.         01h set handle attributes
  3139.         BL = new attribute
  3140.            00h handle is volatile
  3141.            01h handle is nonvolatile
  3142.         02h get attribute capability
  3143.         Return: AL = attribute capability
  3144.                 00h only volatile handles supported
  3145.                 01h both volatile and non-volatile supported
  3146.     DX = handle
  3147. Return: AH = status (00h,80h,81h,83h,84h,8Fh-91h) (see #2897)
  3148. SeeAlso: AH=53h
  3149. --------m-6753-------------------------------
  3150. INT 67 - LIM EMS 4.0 - GET/SET HANDLE NAME
  3151.     AH = 53h
  3152.     AL = subfunction
  3153.         00h get handle name
  3154.            ES:DI -> 8-byte buffer for handle name
  3155.         01h set handle name
  3156.            DS:SI -> 8-byte handle name
  3157.     DX = handle
  3158. Return: AH = status (00h,80h,81h,83h,84h,8Fh,A1h) (see #2897)
  3159. SeeAlso: AH=52h
  3160. --------m-6754-------------------------------
  3161. INT 67 - LIM EMS 4.0 - GET HANDLE DIRECTORY
  3162.     AH = 54h
  3163.     AL = subfunction
  3164.         00h get handle directory
  3165.            ES:DI -> buffer for handle directory (see #2900)
  3166.         01h search for named handle
  3167.            DS:SI -> 8-byte name
  3168.         02h get total number of handles
  3169. Return: AL = number of entries in handle directory (subfunction 00h)
  3170.     DX = value of named handle (subfunction 01h)
  3171.     BX = total number of handles (subfunction 02h)
  3172.     AH = status (00h,80h,81h,84h,8Fh,A0h,A1h) (see also #2899)
  3173.         A1h a handle found had no name
  3174.  
  3175. Format of EMS handle directory entry:
  3176. Offset    Size    Description    (Table 2900)
  3177.  00h    WORD    handle
  3178.  02h  8 BYTEs    handle's name
  3179. --------m-6755-------------------------------
  3180. INT 67 - LIM EMS 4.0 - ALTER PAGE MAP AND JUMP
  3181.     AH = 55h
  3182.     AL = subfunction
  3183.         00h physical page numbers provided by caller
  3184.         01h segment addresses provided by caller
  3185.     DX = handle
  3186.     DS:SI -> structure containing map and jump address
  3187. Return: (at target address unless error)
  3188.     AH = status (00h,80h,81h,83h,84h,8Ah,8Bh,8Fh) (see #2897)
  3189. SeeAlso: AH=56h
  3190. --------m-6756-------------------------------
  3191. INT 67 - LIM EMS 4.0 - ALTER PAGE MAP AND CALL
  3192.     AH = 56h
  3193.     AL = subfunction
  3194.         00h physical page numbers provided by caller
  3195.         DX = handle
  3196.         DS:SI -> structure containing page map and call address
  3197.         01h segment addresses provided by caller
  3198.         DX = handle
  3199.         DS:SI -> structure containing page map and call address
  3200.         02h get page map stack space required
  3201.         Return: BX = stack space required
  3202. Return: (if successful, the target address is called.  Use a RETF to return
  3203.      and restore mapping context)
  3204.     AH = status (00h,80h,81h,83h,84h,8Ah,8Bh,8Fh) (see #2897)
  3205. SeeAlso: AH=55h
  3206. --------m-6756FF-----------------------------
  3207. INT 67 - RM386 v6.00 - ???
  3208.     AX = 56FFh
  3209.     DS:SI -> ???
  3210.     ???
  3211. Return: ???
  3212. --------m-6757-------------------------------
  3213. INT 67 - LIM EMS 4.0 - MOVE/EXCHANGE MEMORY REGION
  3214.     AH = 57h
  3215.     AL = subfunction
  3216.         00h move memory region
  3217.         01h exchange memory region
  3218.     DS:SI -> structure describing source and destination (see #2902)
  3219. Return: AH = status (see #2901)
  3220. Note:    source and destination may overlap for a move, in which case the copy
  3221.       direction is chosen such that the destination receives an intact copy
  3222.       of the source region
  3223.  
  3224. (Table 2901)
  3225. Values for EMS function status:
  3226.  00h    successful
  3227.  80h    internal error
  3228.  81h    hardware failure
  3229.  83h    invalid handle
  3230.  84h    undefined function requested
  3231.  8Ah    invalid logical page number encountered
  3232.  8Fh    undefined subfunction
  3233.  92h    successful, but a portion of the source region has been overwritten
  3234.  93h    length of source or destination region exceeds length of region
  3235.       allocated to either source or destination handle
  3236.  94h    conventional and expanded memory regions overlap
  3237.  95h    offset within logical page exceeds size of logical page
  3238.  96h    region length exceeds 1M
  3239.  97h    source and destination EMS regions have same handle and overlap
  3240.  98h    memory source or destination type undefined
  3241.  A2h    attempted to wrap around 1M conventional address space
  3242.  
  3243. Format of EMS copy data:
  3244. Offset    Size    Description    (Table 2902)
  3245.  00h    DWORD    region length in bytes
  3246.  04h    BYTE    source memory type
  3247.         00h conventional
  3248.         01h expanded
  3249.  05h    WORD    source handle (0000h if conventional memory)
  3250.  07h    WORD    source initial offset (within page if EMS, segment if convent)
  3251.  09h    WORD    source initial segment (conv mem) or logical page (EMS)
  3252.  0Bh    BYTE    destination memory type
  3253.         00h conventional
  3254.         01h expanded
  3255.  0Ch    WORD    destination handle
  3256.  0Eh    WORD    destination initial offset
  3257.  10h    WORD    destination initial segment or page
  3258. --------m-6758-------------------------------
  3259. INT 67 - LIM EMS 4.0 - GET MAPPABLE PHYSICAL ADDRESS ARRAY
  3260.     AH = 58h
  3261.     AL = subfunction
  3262.         00h get mappable physical address array
  3263.         ES:DI -> buffer to be filled with array (see #2903)
  3264.         01h get number of entries in m.p.a. array
  3265. Return: CX = number of entries in array
  3266.     AH = status (00h,80h,81h,84h,8Fh) (see #2901)
  3267. Note:    the returned array for subfunction 00h is filled in physical segment
  3268.       address order
  3269.  
  3270. Format of EMS mappable physical address entry:
  3271. Offset    Size    Description    (Table 2903)
  3272.  00h    WORD    physical page segment
  3273.  02h    WORD    physical page number
  3274. --------m-675857-----------------------------
  3275. INT 67 U - NETROOM??? - ???
  3276.     AX = 5857h
  3277.     BX = function??? (0057h,0059h,0159h seen)
  3278.     ???
  3279. Return: ???
  3280. Note:    BX=0059h appears to be analogous to AX=5800h and BX=0159h appears to
  3281.       be analogous to AX=5801h; BX=0057h appears to indicate whether
  3282.       AX=580xh or AX=5857h/BX=0x59h should be used
  3283. SeeAlso: AX=5BF0h
  3284. --------m-6759-------------------------------
  3285. INT 67 - LIM EMS 4.0 - GET EXPANDED MEMORY HARDWARE INFORMATION
  3286.     AH = 59h
  3287.     AL = subfunction
  3288.         00h get hardware configuration array
  3289.         ES:DI -> buffer to be filled with array (see #2904)
  3290.         01h get unallocated raw page count
  3291.         Return: BX = unallocated raw pages
  3292.             DX = total raw pages
  3293. Return: AH = status (see also AH=58h"EMS 4.0")
  3294.         A4h access denied by operating system
  3295. Note:    subfunction 00h is for use by operating systems only, and can be
  3296.       enabled or disabled at any time by the operating system
  3297.  
  3298. Format of EMS hardware configuration array:
  3299. Offset    Size    Description    (Table 2904)
  3300.  00h    WORD    size of raw EMM pages in paragraphs
  3301.  02h    WORD    number of alternate register sets
  3302.  04h    WORD    size of mapping-context save area in bytes
  3303.  06h    WORD    number of register sets assignable to DMA
  3304.  08h    WORD    DMA operation type
  3305.         0000h DMA with alternate register sets
  3306.         0001h only one DMA register set
  3307. --------m-675A-------------------------------
  3308. INT 67 - LIM EMS 4.0 - ALLOCATE STANDARD/RAW PAGES
  3309.     AH = 5Ah
  3310.     AL = subfunction
  3311.         00h allocate standard pages
  3312.         01h allocate raw pages
  3313.     BX = number of pages to allocate
  3314. Return: DX = handle
  3315.     AH = status (00h,80h,81h,84h,85h,87h,88h,8Fh) (see #2897)
  3316. --------m-675B-------------------------------
  3317. INT 67 - LIM EMS 4.0 - ALTERNATE MAP REGISTER SET
  3318.     AH = 5Bh
  3319.     AL = subfunction
  3320.         00h get alternate map register set
  3321.         Return: BL = current active alternate map register set number
  3322.             ES:DI -> map register context save area if BL=00h
  3323.         01h set alternate map register set
  3324.         BL = new alternate map register set number
  3325.         ES:DI -> map register context save area if BL=0
  3326.         02h get alternate map save array size
  3327.         Return: DX = array size in bytes
  3328.         03h allocate alternate map register set
  3329.         Return: BL = number of map register set; 00h = not supported
  3330.         04h deallocate alternate map register set
  3331.         BL = number of alternate map register set
  3332. Return: AH = status (00h,80h,81h,84h,8Fh,9Ah-9Dh,A3h,A4h) (see #2905)
  3333. Note:    this function is for use by operating systems only, and can be
  3334.       enabled or disabled at any time by the operating system
  3335.  
  3336. (Table 2905)
  3337. Values for EMS function status:
  3338.  00h    successful
  3339.  80h    internal error
  3340.  81h    hardware malfunction
  3341.  84h    undefined function requested
  3342.  8Fh    undefined subfunction
  3343.  9Ah    specified alternate map register or DMA register set not supported
  3344.  9Bh    all alternate map register or DMA register sets currently allocated
  3345.  9Ch    alternate map register or DMA register sets not supported
  3346.  9Dh    undefined or unallocated alternate map register/DMA register set
  3347.  9Eh    dedicated DMA channels not supported
  3348.  9Fh    specified dedicated DMA channel not supported
  3349.  A3h    source array corrupted
  3350.  A4h    operating system denied access
  3351. --------m-675B-------------------------------
  3352. INT 67 - LIM EMS 4.0 - ALTERNATE MAP REGISTER SET - DMA REGISTERS
  3353.     AH = 5Bh
  3354.     AL = subfunction
  3355.         05h allocate DMA register set
  3356.         Return: BL = DMA register set number, 00h if not supported
  3357.         06h enable DMA on alternate map register set
  3358.            BL = DMA register set number
  3359.            DL = DMA channel number
  3360.         07h disable DMA on alternate map register set
  3361.            BL = DMA register set number
  3362.         08h deallocate DMA register set
  3363.            BL = DMA register set number
  3364. Return: AH = status (00h,80h,81h,84h,8Fh,9Ah-9Fh,A3h,A4h) (see #2905)
  3365. Note:    this function is for use by operating systems only, and can be
  3366.       enabled or disabled at any time by the operating system
  3367. --------m-675BE0-----------------------------
  3368. INT 67 - MICEMM v4D, RM386 - GET LINEAR ADDRESS OF MEMORY
  3369.     AX = 5BE0h
  3370.     ES:BX -> memory for which to get linear address
  3371. Return: AH = 00h
  3372.     CX:DX = linear address of physical memory corresponding to ES:BX
  3373. Program: RAM-MAN/386 is the memory manager included with Helix's Netroom;
  3374.       MICEMM is a memory manager for some Micronics motherboards
  3375. Note:    this has been superceded by AX=DE06h, which should be used instead
  3376. SeeAlso: AX=5BF0h,AX=5BF1h,AX=DE06h
  3377. --------m-675BE1-----------------------------
  3378. INT 67 - RM386 v6.00+ - GET MEMORY MANAGER SIZE
  3379.     AX = 5BE1h
  3380. Return: AH = 00h
  3381.     CX = code and data size in bytes
  3382.     DX:BX = physical address of RM386 code
  3383.     DI:SI = total size of RM386 area including handle tables
  3384.     BP = number of additional pages (high DOS, etc.)
  3385. SeeAlso: AX=5BE0h,AX=5BE2h
  3386. --------m-675BE2-----------------------------
  3387. INT 67 - RM386 v6.00+ - GET INTERRUPT VECTORS
  3388.     AX = 5BE2h
  3389. Return: DS:SI -> V86-mode table (see #2906)
  3390.     ES:BX -> ??? (undoc, middle of device driver interrupt routine!)
  3391. SeeAlso: AX=5BE0h,AX=5BE1h
  3392.  
  3393. Format of RM386 V86-mode table:
  3394. Offset    Size    Description    (Table 2906)
  3395.  00h    DWORD    original INT 13 vector
  3396.  04h    DWORD    original INT 15 vector
  3397.  08h    DWORD    original INT 19 vector
  3398.  0Ch    DWORD    original INT 21 vector
  3399.  10h    DWORD    original INT 4B vector
  3400.  14h    DWORD    original INT 67 vector
  3401. --------m-675BF0-----------------------------
  3402. INT 67 - MICEMM v4D, RM386 - INSTALLATION CHECK
  3403.     AX = 5BF0h
  3404. Return: AH = 00h if MICEMM or RM386 present
  3405.         BX = code segment of driver
  3406. Program: MICEMM is the Micronics Expanded Memory Manager; RM386 is the memory
  3407.       manager included in Helix Software's Netroom
  3408. SeeAlso: AH=3Fh,AX=5BE0h,AX=5BF1h
  3409. --------m-675BF1-----------------------------
  3410. INT 67 - MICEMM v4D, RM386 - GET ADDRESS MAP
  3411.     AX = 5BF1h
  3412.     ES:BX -> 256-byte (MICEMM) or 512-byte (RM386) buffer for memory types
  3413. Return: AH = 00h
  3414.     ES:BX buffer filled (see #2907)
  3415. Note:    each byte in the buffer specifies the type of a 4K page of memory
  3416. SeeAlso: AX=5BE0h,AX=5BF0h
  3417.  
  3418. (Table 2907)
  3419. Values for MICEMM/RM386 memory type:
  3420.  00h    unused (MICEMM), RAM/available (RM386)
  3421.  02h    DOS extension (XMS UMB)
  3422.  04h    shadowed ROM
  3423.  08h    mappable EMS
  3424.  10h    page frame
  3425.  20h    ROM
  3426.  40h    reserved (video memory, etc)
  3427.  80h    RAM (MICEMM), Windows UMB (RM386)
  3428. --------m-675BF2-----------------------------
  3429. INT 67 - RM386 - GET RM386 INTERNAL DATA
  3430.     AX = 5BF2h
  3431.     CX = size of buffer
  3432.     DS:SI -> buffer for internal data
  3433.     (documentation says ES:BX -> buffer, SI = offset within RM386)
  3434. Return: buffer filled
  3435. Note:    the data returned by this function is release-specific
  3436. SeeAlso: AX=5BF0h
  3437. --------m-675BF3-----------------------------
  3438. INT 67 - RM386 - RETURN TO REAL MODE
  3439.     AX = 5BF3h
  3440. Return: nothing
  3441. Note:    use AX=5DE0h instead of this functin
  3442. SeeAlso: AX=5BF0h,AX=5DE0h
  3443. --------m-675BF4-----------------------------
  3444. INT 67 - RM386 v6.00 - GET RM386 GLOBAL FLAGS
  3445.     AX = 5BF4h
  3446. Return: AH = 00h
  3447.     BX = global flags 1 (see #2908)
  3448.     CX = global flags 2 (see #2909)
  3449.     DX = global flags 3 (see #2910)
  3450.     SI = global flags 4 (see #2911)
  3451. SeeAlso: AX=5BF0h
  3452.  
  3453. Bitfields for RM386 global flags 1:
  3454. Bit(s)    Description    (Table 2908)
  3455.  0-3    reserved
  3456.  4    V86 mode
  3457.  5    reserved
  3458.  6    80386 or higher CPU
  3459.  7,8    reserved
  3460.  9    A20 enabled at startup
  3461.  10    "HIGH_IO"
  3462.  11    ROM
  3463.  12    large frame
  3464.  13,14    reserved
  3465.  15    PS/2-style A20 control
  3466.  
  3467. Bitfields for RM386 global flags 2:
  3468. Bit(s)    Description    (Table 2909)
  3469.  0    HMA in use
  3470.  1    XMS present
  3471.  2    using XMS driver memory
  3472.  3    HIGH (NEAT only)
  3473.  4-7    reserved
  3474.  8    NOBKTRAP
  3475.  9    NORESET
  3476.  10    ALTMAP
  3477.  11    NOFRAME
  3478.  12-15    reserved
  3479.  
  3480. Bitfields for RM386 global flags 3:
  3481. Bit(s)    Description    (Table 2910)
  3482.  0    NOTEST
  3483.  1    NOEBDA
  3484.  2    Windows3 support
  3485.  3    system board mouse
  3486.  4    DISKBUF
  3487.  5    EBDALOW
  3488.  6    A20 global enable flag
  3489.  7    A20 flag
  3490.  8    EBDA moved to stub
  3491.  9    VXD file was found
  3492.  10    reserved
  3493.  11    NOBOOTMAP
  3494.  12    AUTO
  3495.  13    PS/2 machine
  3496.  14    Compaq ROM merge active
  3497.  15    NOHMA set
  3498.  
  3499. Bitfields for RM386 global flags 4:
  3500. Bit(s)    Description    (Table 2911)
  3501.  0    "NOV8259" don't virtualize interrupt controller
  3502.  1    NOSCSI
  3503.  2    NOSCAN
  3504.  3    NOTR
  3505.  4    ALTBOOT
  3506.  5    NOCOMPQ
  3507.  6    KB2TRAP
  3508.  7    DESHADOW
  3509.  8    Video 7 VGA detected
  3510.  9    reserved
  3511.  10    NOVGA
  3512.  11    NOPS2
  3513.  12    DEBUG
  3514.  13    NOVKB
  3515.  14,15    reserved
  3516. --------m-675BF5-----------------------------
  3517. INT 67 - RM386 v6.00 - GET RM386 EMS HANDLE COUNT
  3518.     AX = 5BF5h
  3519. Return: AH = status
  3520.         00h successful
  3521.         BX = current number of allocated EMS handles
  3522.         84h function not available
  3523. SeeAlso: AX=5BF0h
  3524. --------m-675C-------------------------------
  3525. INT 67 - LIM EMS 4.0 - PREPARE EXPANDED MEMORY HARDWARE FOR WARM BOOT
  3526.     AH = 5Ch
  3527. Return: AH = status (see #2912)
  3528. Note:    when MS-DOS v6.xx EMM386 is loaded and the keyboard driver supports
  3529.       INT 15/AH=4Fh (keyboard intercept) calls, the system may hang
  3530.       instead of booting if this function is called just prior to a jump
  3531.       to F000h:FFF0h
  3532.  
  3533. (Table 2912)
  3534. Values for EMS function status:
  3535.  00h    successful
  3536.  80h    internal error
  3537.  81h    hardware malfunction
  3538.  84h    undefined function requested
  3539. --------m-675D-------------------------------
  3540. INT 67 - LIM EMS 4.0 - ENABLE/DISABLE OS FUNCTION SET FUNCTIONS
  3541.     AH = 5Dh
  3542.     AL = subfunction
  3543.         00h enable OS Function Set
  3544.         01h disable OS Function Set
  3545.         02h return access key (resets memory manager, returns access key at
  3546.         next invocation)
  3547.     BX,CX = access key returned by first invocation
  3548. Return: BX,CX = access key, returned only on first invocation of function
  3549.     AH = status (see also AH=5Ch)
  3550.         8Fh undefined subfunction
  3551.         A4h operating system denied access
  3552. --------m-675D03-----------------------------
  3553. INT 67 u - Nanosoft MD386 - INTERNAL INITIALIZATION
  3554.     AX = 5D03h
  3555.     ???
  3556. Return: ???
  3557. Program: MD386 is a subset EMS memory manager by Nanosoft specifically
  3558.       designed for use with the MultiDOS Plus multitasker
  3559. SeeAlso: AX=5D04h,AX=5E00h
  3560. --------m-675D04-----------------------------
  3561. INT 67 - Nanosoft MD386 - GET ALTERNATE MAP STRUCTURE
  3562.     AX = 5D04h
  3563.     BX = alternate register set number
  3564.     ES:DI -> 1024-byte buffer for map structure
  3565. Return: AH = status (see #2897)
  3566.     buffer filled if AH=00h
  3567. Note:    used for debugging purposes
  3568. SeeAlso: AX=5D05h
  3569. --------m-675D05-----------------------------
  3570. INT 67 - Nanosoft MD386 - GET INTERNAL HANDLE TABLE
  3571.     AX = 5D05h
  3572.     BX = handle number
  3573.     ES:DI -> 1024-byte buffer for handle table
  3574. Return: AH = status (see #2897)
  3575.     buffer filled if AH=00h
  3576. Note:    used for debugging purposes
  3577. SeeAlso: AX=5D04h
  3578. --------m-675DE0-----------------------------
  3579. INT 67 - RM386 - DISABLE RM386
  3580.     AX = 5DE0h
  3581. Note:    RM386 traps this function on the initial transition to protected
  3582.       mode caused by the INT instruction, which means it can not be
  3583.       overridden simply by hooking the interrupt
  3584. SeeAlso: AX=5DE1h
  3585. --------m-675DE1-----------------------------
  3586. INT 67 - RM386 - ENABLE RM386
  3587.     AX = 5DE1h
  3588. Note:    RM386 traps this function on the initial transition to protected
  3589.       mode caused by the INT instruction, which means it can not be
  3590.       overridden simply by hooking the interrupt
  3591. SeeAlso: AX=5DE0h
  3592. --------m-675DE2-----------------------------
  3593. INT 67 - RM386 - GET PAGE TABLE
  3594.     AX = 5DE2h
  3595.     ES:DI -> 1088-byte buffer for page table
  3596. Return: ES:DI buffer filled
  3597. Note:    RM386 traps this function on the initial transition to protected
  3598.       mode caused by the INT instruction, which means it can not be
  3599.       overridden simply by hooking the interrupt
  3600. SeeAlso: AX=5DE3h
  3601. --------m-675DE3-----------------------------
  3602. INT 67 - RM386 - SET PAGE TABLE
  3603.     AX = 5DE3h
  3604.     ES:DI -> 1088-byte buffer containing page table
  3605. Notes:    only the access bits of the page table are used, the remainder is
  3606.       ignored
  3607.     RM386 traps this function on the initial transition to protected
  3608.       mode caused by the INT instruction, which means it can not be
  3609.       overridden simply by hooking the interrupt
  3610. SeeAlso: AX=5DE2h
  3611. --------m-675DE4-----------------------------
  3612. INT 67 - RM386 - SET WRITE-PROTECTION FOR PAGE IN FIRST MEGABYTE
  3613.     AX = 5DE4h
  3614.     BL = page number
  3615.     BH = access (00h read-only, 01h read-write)
  3616. Note:    RM386 traps this function on the initial transition to protected
  3617.       mode caused by the INT instruction, which means it can not be
  3618.       overridden simply by hooking the interrupt
  3619. --------m-675DE5-----------------------------
  3620. INT 67 - RM386 - MAP PHYSICAL PAGE TO PHYSICAL SEGMENT
  3621.     AX = 5DE5h
  3622.     EBX = physical page number
  3623.     DX = page number in first megabyte to be remapped (linear-addr SHR 12)
  3624. Return: AH = status
  3625.         00h successful
  3626.         8Bh invalid destination page (not in first megabyte)
  3627. Note:    RM386 traps this function on the initial transition to protected
  3628.       mode caused by the INT instruction, which means it can not be
  3629.       overridden simply by hooking the interrupt
  3630. SeeAlso: AX=5DE6h
  3631. --------m-675DE6-----------------------------
  3632. INT 67 - RM386 - MAP LOGICAL 4K PAGE TO PHYSICAL SEGMENT
  3633.     AX = 5DE6h
  3634.     BX = logical page number in 4K pages from beginning of memory for EMS
  3635.           handle
  3636.     CX = segment in first megabyte to be remapped
  3637.     DX = previously-allocated EMS handle
  3638. Return: AH = status
  3639.         00h successful
  3640.         83h invalid handle
  3641.         8Ah invalid logical page (out of handle's range)
  3642.         8Bh invalid destination page (not in first megabyte)
  3643. Note:    RM386 traps this function on the initial transition to protected
  3644.       mode caused by the INT instruction, which means it can not be
  3645.       overridden simply by hooking the interrupt
  3646. SeeAlso: AX=5DE5h
  3647. --------m-675DE7-----------------------------
  3648. INT 67 - RM386 - SET PAGE TABLE BITS FOR RANGE OF PAGES
  3649.     AX = 5DE7h
  3650.     BL = page table bits to be set (bits 2-0 = U/S, R/W, P)
  3651.     CX = number of pages to set
  3652.     DX = first page number to set (in first megabyte)
  3653. Return: AH = status
  3654.         00h successful
  3655.         8Bh invalid destination page (not in first megabyte)
  3656.         A5h invalid page bits
  3657.         A6h invalid page count (overflows first megabyte)
  3658. Note:    RM386 traps this function on the initial transition to protected
  3659.       mode caused by the INT instruction, which means it can not be
  3660.       overridden simply by hooking the interrupt
  3661. --------m-675DE8-----------------------------
  3662. INT 67 - RM386 - GET PARTIAL PAGE TABLE
  3663.     AX = 5DE8h
  3664.     BX = starting page number in first megabyte+HMA (0000h-010Fh)
  3665.     CX = number of page table entries to get
  3666.     ES:DI -> buffer for DWORD page table entries
  3667. Return: AH = status (00h successful, 8Bh invalid page)
  3668. Note:    RM386 traps this function on the initial transition to protected
  3669.       mode caused by the INT instruction, which means it can not be
  3670.       overridden simply by hooking the interrupt
  3671. SeeAlso: AX=5DE9h
  3672. --------m-675DE9-----------------------------
  3673. INT 67 - RM386 - SET PARTIAL PAGE TABLE
  3674.     AX = 5DE9h
  3675.     BX = starting page number in first megabyte+HMA (0000h-010Fh)
  3676.     CX = number of page table entries to get
  3677.     DS:SI -> buffer of DWORD page table entries
  3678. Return: AH = status (00h successful, 8Bh invalid destination page)
  3679. Note:    RM386 traps this function on the initial transition to protected
  3680.       mode caused by the INT instruction, which means it can not be
  3681.       overridden simply by hooking the interrupt
  3682. SeeAlso: AX=5DE8h
  3683. --------m-675DEA-----------------------------
  3684. INT 67 - RM386 - V86-MODE I/O PORT TRAPPING CONTROL
  3685.     AX = 5DEAh
  3686.     BX = function
  3687.         00h globally disable V86-mode trapping
  3688.         01h globally enable V86-mode trapping
  3689.         CL = interrupt to use for trapping
  3690.         02h get I/O trapping state
  3691. Return: AH = status
  3692.         00h successful
  3693.         BX = current trapping state (function 02h)
  3694.             0000h disabled, 0001h enabled
  3695.         CX = interrupt used as trap interrupt (functions 00h and 02h)
  3696. Notes:    RM386 traps this function on the initial transition to protected
  3697.       mode caused by the INT instruction, which means it can not be
  3698.       overridden simply by hooking the interrupt
  3699.     when I/O trapping is enabled and I/O port access occurs, RM386
  3700.       simulates an INT instruction for the specified interrupt; the
  3701.       interrupt handler is responsible for decoding the trapped instruction
  3702.       and performing the appropriate action.  INT 2C/AX=002Dh provides a
  3703.       similar but more-easily used interface.
  3704. SeeAlso: AX=5DEBh,AH=EFh"RM386",INT 2C/AX=002Dh
  3705. --------m-675DEB-----------------------------
  3706. INT 67 - RM386 - V86-MODE I/O TRAPPING PORT CONTROL
  3707.     AX = 5DEBh
  3708.     BX = function
  3709.         00h disable V86-mode trapping for specified port
  3710.         01h enable V86-mode trapping for specified port
  3711.         02h get V86-mode trapping state for specified port
  3712.     DX = port for which to enable/disable/query trapping
  3713. Return: AH = status
  3714.         00h successful
  3715.         BX = current trapping state (00h off, 01h on) (function 02)
  3716.         A7h invalid port ID
  3717.         A8h reserved port--cannot trap/untrap (DMA/INT/KBD controllers)
  3718. Notes:    RM386 traps this function on the initial transition to protected
  3719.       mode caused by the INT instruction, which means it can not be
  3720.       overridden simply by hooking the interrupt
  3721. SeeAlso: AX=5DEAh
  3722. --------m-675DFD-----------------------------
  3723. INT 67 U - RM386 v6.00 - ???
  3724.     AX = 5DFDh
  3725.     ???
  3726. Return: ???
  3727. Note:    RM386 traps this function on the initial transition to protected
  3728.       mode caused by the INT instruction, which means it can not be
  3729.       overridden simply by hooking the interrupt
  3730. SeeAlso: AX=5DFEh
  3731. --------m-675DFE-----------------------------
  3732. INT 67 U - RM386 v6.00 - ???
  3733.     AX = 5DFEh
  3734.     ???
  3735. Return: ???
  3736. Note:    RM386 traps this function on the initial transition to protected
  3737.       mode caused by the INT instruction, which means it can not be
  3738.       overridden simply by hooking the interrupt
  3739. SeeAlso: AX=5DFDh
  3740. --------m-675DFF-----------------------------
  3741. INT 67 U - RM386 v6.00 - ???
  3742.     AX = 5DFFh
  3743.     ???
  3744. Return: ???
  3745. Note:    RM386 traps this function on the initial transition to protected
  3746.       mode caused by the INT instruction, which means it can not be
  3747.       overridden simply by hooking the interrupt
  3748. SeeAlso: AX=5DFDh,AX=5DFEh
  3749. --------m-675E00-----------------------------
  3750. INT 67 - Nanosoft MD386 - SET HARDWARE BREAKPOINT
  3751.     AX = 5E00h
  3752.     DH = breakpoint number (0-3)
  3753.     DL = breakpoint attributes (used to set DR7)
  3754.     CX:BX = linear address of breakpoint
  3755. SeeAlso: AX=5D03h,AX=5E01h
  3756. --------m-675E01-----------------------------
  3757. INT 67 - Nanosoft MD386 - GET HARDWARE DEBUG REGISTER
  3758.     AX = 5E01h
  3759.     BL = register number (0-3,7)
  3760. Return: CX:BX = value of specified DRx register
  3761. SeeAlso: AX=5E00h
  3762. --------m-675E02-----------------------------
  3763. INT 67 - Nanosoft MD386 - SET DEBUG EXCEPTION HANDLER
  3764.     AX = 5E02h
  3765.     CX:BX -> exception handler
  3766. Note:    the specified exception handler is called with a simulated interrupt
  3767.       whenever a debug exception occurs which was caused by a hardware
  3768.       breakpoint set with the debug registers
  3769. SeeAlso: AX=5E04h,AX=5E05h
  3770. --------m-675E03-----------------------------
  3771. INT 67 - Nanosoft MD386 - ENABLE/DISABLE MEMORY WRITE PROTECTION
  3772.     AX = 5E03h
  3773.     BL = register map set number
  3774.     BH = new state (00h read-only, else read-write)
  3775.     CX = linear page number (linear address SHR 12)
  3776. Note:    setting write protection in map set 0 will cause the setting to become
  3777.       the default for newly-allocated map sets
  3778. --------m-675E04-----------------------------
  3779. INT 67 - Nanosoft MD386 - GET DEBUG EXCEPTION
  3780.     AX = 5E04h
  3781. Return: BL = debug exception (low byte of DR6 register)
  3782. SeeAlso: AX=5E02h,AX=5E05h
  3783. --------m-675E05-----------------------------
  3784. INT 67 - Nanosoft MD386 - IGNORE NEXT DEBUG EXCEPTION
  3785.     AX = 5E05h
  3786. Note:    may be required when using AX=5E02h for handling instruction
  3787.       breakpoints
  3788. SeeAlso: AX=5E02h,AX=5E04h
  3789. --------m-6760-------------------------------
  3790. INT 67 - EEMS - GET PHYSICAL WINDOW ARRAY
  3791.     AH = 60h
  3792.     ES:DI -> buffer
  3793. Return: AH = status (see also AH=40h)
  3794.     AL = number of entries
  3795.     buffer at ES:DI filled
  3796. --------m-6761-------------------------------
  3797. INT 67 - EEMS - GENERIC ACCELERATOR CARD SUPPORT
  3798.     AH = 61h
  3799.     ???
  3800. Return: ???
  3801. Note:    can be used by accelerator card manufacturer to flush RAM cache,
  3802.       ensuring that the cache accurately reflects what the processor would
  3803.       see without the cache.
  3804. --------m-676100-----------------------------
  3805. INT 67 - EEMS - STB GENERIC ACCELERATOR CARD SUPPORT - INSTALLATION CHECK???
  3806.     AX = 6100h
  3807. Return: AH = status (00h if installed???)
  3808. Note:    STB's RAPIDMAP.SYS EMS driver calls this function and AX=6101h if
  3809.       the signature "GACXXX" is found at offset 0Ah in the INT 67 handler's
  3810.       segment (i.e. a device driver named GACXXX?? has hooked INT 67)
  3811. SeeAlso: AX=6101h,INT 02/SI=0714h
  3812. --------m-676101-----------------------------
  3813. INT 67 - EEMS - STB GENERIC ACCELERATOR CARD SUPPORT - GET ??? ENTRY POINT
  3814.     AX = 6101h
  3815. Return: AH = status
  3816.     ---if AH=00h---
  3817.     ES:BX -> ??? entry point
  3818. SeeAlso: AX=6100h
  3819. --------m-6768-------------------------------
  3820. INT 67 - EEMS - GET ADDRESSES OF ALL PAGE FRAMES IN SYSTEM
  3821.     AH = 68h
  3822.     ES:DI -> buffer
  3823. Return: AH = status (see also AH=40h)
  3824.     AL = number of entries
  3825.     buffer at ES:DI filled
  3826. Note:    equivalent to LIM 4.0 function 58h
  3827. --------m-6769-------------------------------
  3828. INT 67 - EEMS - MAP PAGE INTO FRAME
  3829.     AH = 69h
  3830.     AL = frame number
  3831.     BX = page number
  3832.     DX = handle
  3833. Return: AH = status (see also AH=40h)
  3834. Note:    similar to EMS function 44h
  3835. SeeAlso: AH=44h,AH=50h,AH=6Ah
  3836. --------m-676A-------------------------------
  3837. INT 67 - EEMS - PAGE MAPPING
  3838.     AH = 6Ah
  3839.     AL = subfunction
  3840.         00h save partial page map
  3841.         CH = first page frame
  3842.         CL = number of frames
  3843.         ES:DI -> buffer which is to be filled
  3844.         01h restore partial page map
  3845.         CH = first page frame
  3846.         CL = number of frames
  3847.         DI:SI -> previously saved page map
  3848.         02h save and restore partial page map
  3849.         CH = first page frame
  3850.         CL = number of frames
  3851.         ES:DI = buffer for current page map
  3852.         DI:SI = new page map
  3853.         03h get size of save array
  3854.         CH = first page frame
  3855.         CL = number of frames
  3856.         Return: AL = size of array in bytes
  3857.         04h switch to standard map register setting
  3858.         05h switch to alternate map register setting
  3859.         06h deallocate pages mapped to frames in conventional memory
  3860.         CH = first page frame
  3861.         CL = number of frames
  3862. Return: AH = status (see #2897)
  3863. Note:    similar to EMS function 4Eh, except that a subrange of pages can be
  3864.       specified
  3865. SeeAlso: AH=69h
  3866. --------m-676B-------------------------------
  3867. INT 67 - DESQview 2.42-2.53 - BUG
  3868.     AH = 6Bh
  3869. Note:    the EMM.DVR portion of DESQview branches to a random location on this
  3870.       function due to a fencepost error
  3871. --------m-67DD-------------------------------
  3872. INT 67 - Quadtel QMAPS - API
  3873.     AH = DDh
  3874.     AL = function
  3875.     ???
  3876. Return: ???
  3877. Notes:    details are not yet available
  3878.     Hewlett-Packard's HPMM.SYS is a licensed version of QMAPS, and thus
  3879.       supports this API
  3880. SeeAlso: AH=3Fh,AX=FFA5h
  3881. --------E-67DE00-----------------------------
  3882. INT 67 - Virtual Control Program Interface - INSTALLATION CHECK
  3883.     AX = DE00h
  3884. Return: AH = status
  3885.         00h VCPI is present
  3886.         BH = major version number
  3887.         BL = minor version number
  3888.         nonzero  VCPI not present
  3889. BUG:    MS Windows 3.00 is reported to "object violently" to this call.
  3890. SeeAlso: INT 2F/AX=1687h
  3891. --------E-67DE01-----------------------------
  3892. INT 67 - Virtual Control Program Interface - GET PROTECTED MODE INTERFACE
  3893.     AX = DE01h
  3894.     ES:DI -> 4K page table buffer
  3895.     DS:SI -> three descriptor table entries in GDT
  3896.         first becomes code segment descriptor, other two for use by
  3897.           main control program
  3898. Return: AH = 00h successful
  3899.         DI -> first unused page table entry in buffer
  3900.         EBX -> protected mode entry point in code segment (see #2913)
  3901.     AH = nonzero  failed
  3902. Note:    protected mode entry point may be called with AX=DE00h-DE05h and
  3903.       AX=DE0Ch (in each case, all other registers as appropriate for
  3904.       the function)
  3905. SeeAlso: INT 2F/AX=1687h,INT 67/AH=3Fh
  3906.  
  3907. (Table 2913)
  3908. Call QEMM v6.03 protected mode entry point additionally with:
  3909.     AX = DF00h ???
  3910.         ???
  3911.         Return: ???
  3912.     AX = DF01h ???
  3913.         ???
  3914.         Return: ???
  3915. --------E-67DE02-----------------------------
  3916. INT 67 - Virtual Control Program Interface - GET MAX PHYSICAL MEMORY ADDRESS
  3917.     AX = DE02h
  3918. Return: AH = 00h  successful
  3919.         EDX = physical address of highest 4K memory page
  3920.     AH nonzero: failed
  3921. SeeAlso: AH=3Fh
  3922. --------E-67DE03-----------------------------
  3923. INT 67 - Virtual Control Program Interface - GET NUMBER OF FREE 4K PAGES
  3924.     AX = DE03h
  3925. Return: AH = 00h  successful
  3926.         EDX = number of free 4K pages
  3927.     AH nonzero: failed
  3928. Notes:    returns total number of pages available to ALL tasks in system
  3929.     also available in protected mode by calling the protected-mode VCPI
  3930.       entry point (see AX=DE01h,#2913)
  3931. SeeAlso: AX=DE04h
  3932. --------E-67DE04-----------------------------
  3933. INT 67 - Virtual Control Program Interface - ALLOCATE A 4K PAGE
  3934.     AX = DE04h
  3935. Return: AH = 00h successful
  3936.         EDX = physical address of allocated page
  3937.     AH nonzero: failed
  3938. Notes:    the client program is responsible for freeing all memory allocated
  3939.       with this call before terminating
  3940.     also available in protected mode by calling the protected-mode VCPI
  3941.       entry point (see AX=DE01h,#2913)
  3942. SeeAlso: AH=3Fh,AX=DE03h,AX=DE05h
  3943. --------E-67DE05-----------------------------
  3944. INT 67 - Virtual Control Program Interface - FREE 4K PAGE
  3945.     AX = DE05h
  3946.     EDX = physical address of 4K page
  3947. Return: AH = status
  3948.         00h successful
  3949.         nonzero failed
  3950. Note:    also available in protected mode by calling the protected-mode VCPI
  3951.       entry point (see AX=DE01h,#2913)
  3952. SeeAlso: AH=3Fh,AX=DE04h
  3953. --------E-67DE06-----------------------------
  3954. INT 67 - Virtual Control Program Interface - GET PHYS ADDR OF PAGE IN FIRST MB
  3955.     AX = DE06h
  3956.     CX = page number (linear address shifted right 12 bits)
  3957. Return: AH = status
  3958.         00h successful
  3959.         EDX = physical address of page
  3960.         nonzero invalid page number (AH = 8Bh recommended)
  3961. SeeAlso: AX=5BE0h
  3962. --------E-67DE07-----------------------------
  3963. INT 67 - Virtual Control Program Interface - READ CR0
  3964.     AX = DE07h
  3965. Return: AH = 00h
  3966.     EBX = value of Control Register 0
  3967. SeeAlso: AH=3Fh,AX=DE07h
  3968. --------E-67DE08-----------------------------
  3969. INT 67 - Virtual Control Program Interface - READ DEBUG REGISTERS
  3970.     AX = DE08h
  3971.     ES:DI -> array of 8 DWORDs
  3972. Return: AH = 00h
  3973.     buffer filled with DR0 first, DR7 last, DR4 and DR5 unused
  3974. SeeAlso: AH=3Fh,AX=DE09h
  3975. --------E-67DE09-----------------------------
  3976. INT 67 - Virtual Control Program Interface - SET DEBUG REGISTERS
  3977.     AX = DE09h
  3978.     ES:DI -> array of 8 DWORDs holding new values of debug registers
  3979. Return: AH = 00h
  3980. Note:    values for DR4 and DR5 ignored
  3981. SeeAlso: AH=3Fh,AX=DE08h
  3982. --------E-67DE0A-----------------------------
  3983. INT 67 - Virtual Control Program Interface - GET 8259 INTERRUPT VECTOR MAPPINGS
  3984.     AX = DE0Ah
  3985. Return: AH = 00h successful
  3986.         BX = first vector used by master 8259 (IRQ0)
  3987.         CX = first vector used by slave 8259 (IRQ8)
  3988.     AH nonzero: failed
  3989. Note:    CX is undefined in systems without a slave 8259
  3990. SeeAlso: AX=DE0Bh,INT 21/AX=250Ch,INT 31/AX=0400h
  3991. --------E-67DE0B-----------------------------
  3992. INT 67 - Virtual Control Program Interface - SET 8259 INTERRUPT VECTOR MAPPINGS
  3993.     AX = DE0Bh
  3994.     BX = first vector used by master 8259
  3995.     CX = first vector used by slave 8259
  3996.     interrupts disabled
  3997. Return: AH = 00h successful
  3998.     AH nonzero: failed
  3999. Notes:    This call merely informs the server that the client has changed the
  4000.       interrupt mappings.  The client may not change the mappings if they
  4001.       have already been changed by the server or another client, and is
  4002.       responsible for restoring the original mappings before terminating.
  4003. SeeAlso: AX=DE0Ah,INT 2C/AX=002Ah
  4004. --------E-67DE0C-----------------------------
  4005. INT 67 - Virtual Control Program Interface - SWITCH TO PROTECTED MODE
  4006.     AX = DE0Ch
  4007.     ESI = linear address in first megabyte of values for system
  4008.           registers (see #2914)
  4009.     interrupts disabled
  4010. Return: interrupts disabled
  4011.     GDTR, IDTR, LDTR, TR loaded
  4012.     SS:ESP must have at least 16 bytes space, and the entry point is
  4013.           required to set up a new stack before enabling interrupts
  4014.     EAX, ESI, DS, ES, FS, GS destroyed
  4015. Note:    in protected mode, calling the protected-mode VCPI entry point with
  4016.       AX = DE0Ch
  4017.       DS = segment selector mapping entire linear address space obtained
  4018.           via AX=DE01h
  4019.       SS:ESP in first megabyte of linear memory
  4020.       STACK:QWORD  return address from FAR call to 32-bit segment
  4021.         DWORD  EIP
  4022.         DWORD  CS
  4023.         DWORD  reserved for EFLAGS
  4024.         DWORD  ESP
  4025.         DWORD  SS
  4026.         DWORD  ES
  4027.         DWORD  DS
  4028.         DWORD  FS
  4029.         DWORD  GS
  4030.       and interrupts disabled, will switch to virtual86 mode with
  4031.         interrupts disabled, all segment registers loaded, and EAX
  4032.         destroyed.
  4033. SeeAlso: AH=3Fh,INT 15/AH=89h,INT D4/AH=10h
  4034.  
  4035. Format of system register values for switch to protected mode:
  4036. Offset    Size    Description    (Table 2914)
  4037.  00h    DWORD    value for CR3
  4038.  04h    DWORD    linear address in first megabyte of value for GDTR
  4039.  08h    DWORD    linear address in first megabyte of value for IDTR
  4040.  0Ch    WORD    value for LDTR
  4041.  0Eh    WORD    value for TR
  4042.  10h    PWORD    CS:EIP of protected mode entry-point
  4043. --------m-67DE0F-----------------------------
  4044. INT 67 - Netroom3 - ???
  4045.     AX = DE0Fh
  4046.     ???
  4047. Return: ???
  4048. Note:    called by Netroom's DPMI.EXE
  4049. --------m-67EF-------------------------------
  4050. INT 67 - RM386 v6.00+ - EXECUTE XMS FUNCTION
  4051.     AH = EFh
  4052.     AL = function (00h-12h,80h-8Fh)
  4053.     other register as appropriate for XMS function
  4054. Return: varies by function (see INT 2F/AX=4310h"XMS")
  4055. Note:    these functions appear to be equivalent to the XMS functions with the
  4056.       same numbers
  4057. SeeAlso: AX=5DFFh"RM386",INT 2F/AX=4310h"XMS"
  4058. --------m-67FFA5-----------------------------
  4059. INT 67 - Microsoft EMM386.EXE v4.20+ - INSTALLATION CHECK
  4060.     AX = FFA5h
  4061. Return: AX = 845Ah/84A5h if loaded
  4062.         BX:CX -> API entry point (see #2915)
  4063. Notes:    this call is available even if EMM386 is not providing EMS
  4064.     the returned AX is 845Ah inside of MSWindows, 84A5h under bare DOS
  4065.     if no other program has hooked INT 67, an alternate installation
  4066.       check is to test for the string
  4067.       "MICROSOFT EXPANDED MEMORY MANAGER 386" at offset 14h in the INT 67
  4068.       handler's segment; the word immediately preceding this string
  4069.       contains the offset of the API entry point
  4070. SeeAlso: AH=3Fh,AX=FFA5h/BX=4345h,INT 21/AX=4402h"EMM386.EXE"
  4071.  
  4072. (Table 2915)
  4073. Call EMM386.EXE API entry point with:
  4074.     AH = 00h get memory manager's status
  4075.         Return: AH = status
  4076.             bit 0: not active (OFF)
  4077.             bit 1: in "Auto" mode
  4078.     AH = 01h set memory manager's state
  4079.         AL = new state (00h ON, 01h OFF, 02h AUTO)
  4080.     AH = 02h Weitek coprocessor support
  4081.         AL = subfunction
  4082.         00h get Weitek support state
  4083.             Return: AL = status
  4084.                 bit 0: Weitek coprocessor is present
  4085.                 bit 1: Weitek support is enabled
  4086.         01h turn on Weitek support
  4087.         02h turn off Weitek support
  4088.      --- v4.20-4.41 only ---
  4089.     AH = 03h Windows support???
  4090.         AL = subfunction (00h, 01h)
  4091.     AH = 04h print copyright notice to standard output
  4092.          (using INT 21/AH=09h)
  4093.     AH = 05h print available report
  4094.          (the one shown when running EMM386 from the DOS prompt)
  4095. SeeAlso: #0855 at INT 21/AX=4402h/SF=02h,#1951 at INT 2F/AX=12FFh/BX=0106h
  4096. --------m-67FFA5BX4345-----------------------
  4097. INT 67 U - Compaq CEMM v5.10+ - PRIVATE API
  4098.     AX = FFA5h
  4099.     BX = 4345h ("CE")
  4100.     DX = subfunction
  4101.         0000h unshadow video ROM???
  4102.         0001h shadow video ROM???
  4103.         0002h map pages
  4104.         CX = number of pages (00h=one)
  4105.         ESI = linear address of first page to map into address space
  4106.         EDI = linear starting address at which pages are to be visible
  4107.         0003h get ???
  4108.         Return: DX = ??? (0-2)
  4109.         0004h BUG: crashes system due to fencepost error
  4110. Return: AH = 84h
  4111.     AL = status (84h = error, FFh = success)
  4112. Note:    if BX <> 4345h or DX > 0004h on entry, CEMM behaves identically to
  4113.       Microsoft's EMM386 (see AX=FFA5h"EMM386")
  4114. SeeAlso: AX=FFA5h"EMM386",#0855 at INT 21/AX=4402h/SF=02h,#2915
  4115. --------I-68---------------------------------
  4116. INT 68 - Sangoma CCPOP 3270 resident module
  4117. SeeAlso: INT 67"Sangoma",INT 92"Sangoma"
  4118. --------N-68---------------------------------
  4119. INT 68 - Novell NetWare LU6.2
  4120. Note:    the installation check consists of testing for the signature string
  4121.       "APPC/PC" nine bytes before the interrupt handler
  4122. SeeAlso: AH=01h/SF=1B00h,AH=FAh
  4123. --------h-68---------------------------------
  4124. INT 68 C - HP Vectra AT - IRQ16 - 8041 SERVICE REQUEST
  4125. SeeAlso: INT 08"IRQ0",INT 69"HP Vectra",INT 6F/AH=00h"HP"
  4126. --------N-6801--SF1B00-----------------------
  4127. INT 68 - APPC/PC - NETWORK DEVICE CONTROL - DISPLAY
  4128.     AH = 01h subfn 1B00h
  4129.     DS:DX -> control block (see #2916)
  4130. Return: control block updated
  4131. SeeAlso: AH=01h/SF=2000h,AH=01h/SF=2B00h,INT 68"Novell"
  4132.  
  4133. Format of APPC/PC "DISPLAY" control block:
  4134. Offset    Size    Description    (Table 2916)
  4135.  00h 12 BYTEs    reserved
  4136.  0Ch    WORD    1B00h (verb "DISPLAY")
  4137.  0Eh  6 BYTEs    00h
  4138.  14h    DWORD    (big-endian) return code (see #2917)
  4139.  18h    WORD    00h
  4140.  1Ah  8 BYTEs    (big-endian) logical unit ID
  4141.  22h  8 BYTEs    (big-endian) partner logical unit name
  4142.  2Ah  8 BYTEs    (big-endian) mode name
  4143.  32h    BYTE    logical unit session limit
  4144.  33h    BYTE    partner logical unit session limit
  4145.  34h    BYTE    node maximum negotiable session limit
  4146.  35h    BYTE    current session limit
  4147.  36h    BYTE    minimum negotiated winner limit
  4148.  37h    BYTE    maximum negotiated loser limit
  4149.  38h    BYTE    active session count
  4150.  39h    BYTE    active CONWINNER session count
  4151.  3Ah    BYTE    active CONLOSER session count
  4152.  3Bh    BYTE    session termination count
  4153.  3Ch    BYTE    bit 7: SESSION_TERMINATION_TARGET_DRAIN
  4154.         bit 6: SESSION_TERMINATION_SOURCE_DRAIN
  4155.  
  4156. (Table 2917)
  4157. Values for APPC/PC return code:
  4158.  0000h    successful
  4159.  0001h    BAD_TP_ID
  4160.  0002h    BAD_CONV_ID
  4161.  0003h    bad logical unit ID
  4162.  0008h    no physical unit attached
  4163.  0110h    bad state
  4164.  01B1h    BAD_PART_LUNAME
  4165.  01B2h    bad mode name
  4166.  0201h    physical unit already active
  4167.  0211h    logical unit already active
  4168.  0212h    BAD_PART_SESS
  4169.  0213h    BAD_RU_SIZES
  4170.  0214h    BAD_MODE_SESS
  4171.  0216h    BAD_PACING_CNT
  4172.  0219h    EXTREME_RUS
  4173.  021Ah    SNASVCMG_1
  4174.  0223h    SSCP_CONNECTED_LU
  4175.  0230h    invalid change
  4176.  0243h    too many TPs
  4177.  0272h    adapter close failure
  4178.  0281h    GET_ALLOC_BAD_TYPE
  4179.  0282h    unsuccessful
  4180.  0283h    DLC failure
  4181.  0284h    unrecognized DLC
  4182.  0286h    duplicate DLC
  4183.  0301h    SSCP_PU_SESSION_NOT_ACTIVE
  4184.  0302h    data exceeds RU size
  4185.  0401h    invalid direction
  4186.  0402h    invalid type
  4187.  0403h    segment overlap
  4188.  0404h    invalid first character
  4189.  0405h    table error
  4190.  0406h    conversion error
  4191.  F0010000h    APPC disabled
  4192.  F0020000h    APPC busy
  4193.  F0030000h    APPC abended
  4194.  F0040000h    incomplete
  4195. --------N-6801--SF2000-----------------------
  4196. INT 68 - APPC/PC - NETWORK DEVICE CONTROL - ATTACH PHYSICAL UNIT
  4197.     AH = 01h subfn 2000h
  4198.     DS:DX -> control block (see #2918)
  4199. Return: control block updated
  4200. SeeAlso: AH=01h/SF=2100h,AH=01h/SF=2B00h
  4201.  
  4202. Format of APPC/PC "Attach Physical Unit" control block:
  4203. Offset    Size    Description    (Table 2918)
  4204.  00h 12 BYTEs    reserved
  4205.  0Ch    WORD    2000h (verb "Attach Physical Unit")
  4206.  0Eh  6 BYTEs    00h
  4207.  14h    DWORD    (big-endian) return code (see #2917)
  4208.  18h    WORD    00h
  4209.  1Ah    BYTE    version
  4210.  1Bh    BYTE    release
  4211.  1Ch  8 BYTEs    (big-endian) net name
  4212.  24h  8 BYTEs    (big-endian) physical unit name
  4213.  2Ch  8 BYTEs    00h
  4214.  34h    DWORD    pointer to SYSTEM_LOG_EXIT routine, FFFFFFFFh=don't log errors
  4215.         (see also AH=01h/SF=2100h)
  4216.  38h    DWORD    00h
  4217.  3Ch    BYTE    00h RETURN_CONTROL: COMPLETE
  4218.         01h RETURN_CONTROL: INCOMPLETE
  4219. --------N-6801--SF2100-----------------------
  4220. INT 68 - APPC/PC - NETWORK DEVICE CONTROL - ATTACH LOGICAL UNIT
  4221.     AH = 01h subfn 2100h
  4222.     DS:DX -> control block (see #2919)
  4223. Return: control block updated
  4224. SeeAlso: #2922,#2923,#2925,AH=01h/SF=2000h,AH=01h/SF=2200h,AH=01h/SF=2B00h
  4225.  
  4226. Format of APPC/PC "Attach Logical Unit" control block:
  4227. Offset    Size    Description    (Table 2919)
  4228.  00h 12 BYTEs    reserved
  4229.  0Ch    WORD    2100h (verb "Attach Logical Unit")
  4230.  0Eh  6 BYTEs    00h
  4231.  14h    DWORD    (big-endian) return code (see #2917)
  4232.  18h    WORD    70  offset to partner logical unit record
  4233.  1Ah  8 BYTEs    (big-endian) logical unit name
  4234.  22h  8 BYTEs    (big-endian) logical unit ID
  4235.  2Ah    BYTE    logical unit local address
  4236.  2Bh    BYTE    logical unit session limit
  4237.  2Ch    DWORD    pointer to CREATE_TP_EXIT routine,
  4238.         FFFFFFFFh = reject incoming ALLOCATEs
  4239.         00000000h = queue ALLOCATEs
  4240.  30h    DWORD    00h
  4241.  34h    DWORD    pointer to SYSTEM_LOG_EXIT routine, FFFFFFFFh=don't log errors
  4242.  38h    DWORD    00h
  4243.  3Ch    BYTE    maximum TPs
  4244.  3Dh    BYTE    queue depth
  4245.  3Eh    DWORD    pointer to LU_LU_PASSWORD_EXIT routine, FFFFFFFFh=no pswd exit
  4246.  42h    DWORD    00h
  4247.  46h    WORD    total length of partner records
  4248.  48h    var    array of partner logical unit records (see #2920)
  4249. SeeAlso: #2922,#2923,#2925
  4250.  
  4251. Format of APPC/PC partner logical unit record:
  4252. Offset    Size    Description    (Table 2920)
  4253.  00h    WORD    length of this partner logical unit record
  4254.  02h    WORD    42  offset to mode records
  4255.  04h  8 BYTEs    (big-endian) partner logical unit name
  4256.  0Ch    BYTE    partner logical unit security capabilities
  4257.         bit 7: already verified
  4258.         bit 6: conversation level security
  4259.         bit 5: session level security
  4260.  0Dh    BYTE    partner logical unit session limit
  4261.  0Eh    WORD    partner logical unit maximum MC_SEND_LL
  4262.  10h  8 BYTEs    (big-endian) partner logical unit DLC name
  4263.  18h    BYTE    partner logical unit adapter number
  4264.  19h 17 BYTEs    (counted string) partner logical unit adapter address
  4265.  2Ah    WORD    total length of mode records
  4266.  2Ch 16N BYTEs    array of mode records (see #2921)
  4267.  
  4268. Format of mode record:
  4269. Offset    Size    Description    (Table 2921)
  4270.  00h    WORD    16  length of this mode record
  4271.  02h  8 BYTEs    (big-endian) mode name
  4272.  0Ah    WORD    RU_SIZE high bound
  4273.  0Ch    WORD    RU_SIZE low bound
  4274.  0Eh    BYTE    mode maximum negotiable session limit
  4275.  0Fh    BYTE    pacing size for receive
  4276.  
  4277. Routines defined by LU_LU_PASSWORD_EXIT, CREATE_TP_EXIT, and SYSTEM_LOG_EXIT
  4278. pointers are called by pushing the DWORD pointer to the verb on the stack and
  4279. then performing a FAR call.
  4280.  
  4281. Format of ACCESS_LU_LU_PW verb:
  4282. Offset    Size    Description    (Table 2922)
  4283.  00h 12 BYTEs    reserved
  4284.  0Ch    WORD    1900h (verb "ACCESS_LU_LU_PW")
  4285.  0Eh  8 BYTEs    (big-endian) logical unit ID
  4286.  16h  8 BYTEs    (big-endian) logical unit name
  4287.  1Eh  8 BYTEs    (big-endian) partner logical unit name
  4288.  26h 17 BYTEs    (counted string) partner fully qualified logical unit name
  4289.  37h    BYTE    password available (0=no, 1=yes)
  4290.  38h  8 BYTEs    password
  4291. SeeAlso: #2919,#2923,#2925
  4292.  
  4293. Format of CREATE_TP verb:
  4294. Offset    Size    Description    (Table 2923)
  4295.  00h 12 BYTEs    reserved
  4296.  0Ch    WORD    2300h (verb "CREATE_TP")
  4297.  0Eh  6 BYTEs    00h
  4298.  14h    DWORD    (big-endian) sense code (see #2924)
  4299.  18h  8 BYTEs    (big-endian) TP ID
  4300.  20h  8 BYTEs    (big-endian) logical unit ID
  4301.  28h    DWORD    (big-endian) conversation ID
  4302.  2Ch    BYTE    0 basic conversation, 1 mapped conversation
  4303.  2Dh    BYTE    0 no sync level, 1 confirm
  4304.  2Eh    BYTE    reserved
  4305.  2Fh 65 BYTEs    (counted string) transaction program name
  4306.  70h  6 BYTEs    00h
  4307.  76h    WORD    length of ERROR_LOG_DATA to return
  4308.  78h    DWORD    pointer to ERROR_LOG_DATA buffer
  4309.  7Ch  8 BYTEs    (big-endian) partner logical unit name
  4310.  84h 18 BYTEs    (counted string) partner fully qualified logical unit name
  4311.  96h  8 BYTEs    (big-endian) mode name
  4312.  9Eh 12 BYTEs    00h
  4313.  AAh 11 BYTEs    (counted string) password
  4314.  B5h 11 BYTEs    (counted string) user ID
  4315.  C0h    BYTE    0 verification should be performed
  4316.         1 already verified
  4317. SeeAlso: #2922,#2925
  4318.  
  4319. (Table 2924)
  4320. Values for APPC/PC sense code:
  4321.  00000000h    Ok
  4322.  080F6051h    SECURITY_NOT_VALID
  4323.  084B6031h    TP_NOT_AVAIL_RETRY
  4324.  084C0000h    TP_NOT_AVAIL_NO_RETRY
  4325.  10086021h    TP_NAME_NOT_RECOGNIZED
  4326.  10086034h    CONVERSATION_TYPE_MISMATCH
  4327.  10086041h    SYNC_LEVEL_NOT_SUPPORTED
  4328.  
  4329. Format of SYSLOG verb:
  4330. Offset    Size    Description    (Table 2925)
  4331.  00h 12 BYTEs    reserved
  4332.  0Ch    WORD    2600h (verb "SYSLOG")
  4333.  0Eh 10 BYTEs    00h
  4334.  18h    WORD    (big-endian) type
  4335.  1Ah    DWORD    (big-endian) subtype
  4336.  1Eh    DWORD    pointer to ADDITIONAL_INFO
  4337.  22h    DWORD    (big-endian) conversation ID
  4338.  26h  8 BYTEs    (big-endian) TP ID
  4339.  2Eh  8 BYTEs    (big-endian) physical unit or logical unit name
  4340.  36h    WORD    length of data
  4341.  38h    DWORD    pointer to data
  4342.  3Ch    BYTE    00h
  4343. SeeAlso: #2922,#2923
  4344. --------N-6801--SF2200-----------------------
  4345. INT 68 - APPC/PC - NETWORK DEVICE CONTROL - DETACH LOGICAL UNIT
  4346.     AH = 01h subfn 2200h
  4347.     DS:DX -> control block (see #2926)
  4348. Return: control block updated
  4349. SeeAlso: AH=01h/SF=2000h,AH=01h/SF=2100h,AH=01h/SF=2700h
  4350.  
  4351. Format of APPC/PC "Detach Logical Unit" control block:
  4352. Offset    Size    Description    (Table 2926)
  4353.  00h 12 BYTEs    reserved
  4354.  0Ch    WORD    2200h (verb "Detach Logical Unit")
  4355.  0Eh  6 BYTEs    00h
  4356.  14h    DWORD    (big-endian) return code (see #2917)
  4357.  18h  8 BYTEs    (big-endian) logical unit ID
  4358.  20h    BYTE    00h
  4359. --------N-6801--SF2700-----------------------
  4360. INT 68 - APPC/PC - NETWORK DEVICE CONTROL - DETACH PHYSICAL UNIT
  4361.     AH = 01h subfn 2700h
  4362.     DS:DX -> control block (see #2927)
  4363. Return: control block updated
  4364. SeeAlso: AH=01h/SF=2000h,AH=01h/SF=2100h,AH=01h/SF=2200h
  4365.  
  4366. Format of APPC/PC "Detach Physical Unit" control block:
  4367. Offset    Size    Description    (Table 2927)
  4368.  00h 12 BYTEs    reserved
  4369.  0Ch    WORD    2700h (verb "Detach Physical Unit")
  4370.  0Eh  6 BYTEs    00h
  4371.  14h    DWORD    (big-endian) return code (see #2917)
  4372.  18h    BYTE    00h  type: hard
  4373.         01h  type: soft
  4374. --------N-6801--SF2B00-----------------------
  4375. INT 68 - APPC/PC - NETWORK DEVICE CONTROL - ACTIVATE DLC
  4376.     AH = 01h subfn 2B00h
  4377.     DS:DX -> control block (see #2928)
  4378. Return: control block updated
  4379. SeeAlso: AH=01h/SF=1B00h,AH=01h/SF=2000h
  4380.  
  4381. Format of APPC/PC "Activate DLC" control block:
  4382. Offset    Size    Description    (Table 2928)
  4383.  00h 12 BYTEs    reserved
  4384.  0Ch    WORD    2B00h (verb "Activate DLC")
  4385.  0Eh  6 BYTEs    00h
  4386.  14h    DWORD    (big-endian) return code (see #2917)
  4387.  18h  8 BYTEs    (big-endian) DLC name
  4388.  20h    BYTE    adapter number
  4389. --------N-6802--SF0100-----------------------
  4390. INT 68 - APPC/PC - CONNECTION CONTROL - ALLOCATE
  4391.     AH = 02h subfn 0100h
  4392.     DS:DX -> control block (see #2929)
  4393. Return: control block updated
  4394. SeeAlso: AH=02h/SF=0500h
  4395.  
  4396. Format of APPC/PC "Allocate" control block:
  4397. Offset    Size    Description    (Table 2929)
  4398.  00h 12 BYTEs    reserved
  4399.  0Ch    WORD    0100h (verb "Allocate" or "MC_Allocate")
  4400.  0Eh    BYTE    1 if MC_ (mapped conversation) form of verb
  4401.         0 if basic verb
  4402.  0Fh  5 BYTEs    reserved (0)
  4403.  14h    WORD    (big-endian) primary return code (see #2930)
  4404.  16h    DWORD    (big-endian) error code (see #2931)
  4405.  1Ah  8 BYTEs    (big-endian) TP_ID
  4406.  22h    DWORD    (big-endian) conversation ID
  4407.  26h    BYTE    (MC_Allocate only) conversation type
  4408.         0 basic conversation
  4409.         1 mapped conversation
  4410.  27h    BYTE    SYNC_LEVEL (00h none, 01h confirm)
  4411.  28h    WORD    0000h
  4412.  2Ah    BYTE    RETURN_CONTROL
  4413.         00h when session allocated
  4414.         01h immediate
  4415.         02h when session free
  4416.  2Bh  8 BYTEs    00h
  4417.  33h  8 BYTEs    (big-endian) partner logical unit name
  4418.  3Bh  8 BYTEs    (big-endian) mode name
  4419.  43h 65 BYTEs    (counted string) TP name
  4420.  84h    BYTE    security (00h none, 01h same, 02h pgm)
  4421.  85h 11 BYTEs    00h
  4422.  90h 11 BYTEs    (counted string) password
  4423.  9Bh 11 BYTEs    (counted string) user ID
  4424.  A6h    WORD    PIP_DATA length
  4425.  A8h    DWORD    pointer to PIP_DATA
  4426.  
  4427. (Table 2930)
  4428. Values for APPC/PC primary return code:
  4429.  0000h    successful
  4430.  0001h    parameter check
  4431.  0002h    state check
  4432.  0003h    allocation error
  4433.  0005h    deallocate abended
  4434.  0006h    deallocate abended program
  4435.  0007h    deallocate abended SVC
  4436.  0008h    deallocate abended timer
  4437.  0009h    deallocate normal return
  4438.  000Ah    data posting blocked
  4439.  000Bh    posting not active
  4440.  000Ch    PROG_ERROR_NO_TRUNC
  4441.  000Dh    PROG_ERROR_TRUNC
  4442.  000Eh    PROG_ERROR_PURGING
  4443.  000Fh    CONV_FAILURE_RETRY
  4444.  0010h    CONV_FAILURE_NO_RETRY
  4445.  0011h    SVC_ERROR_NO_TRUNC
  4446.  0012h    SVC_ERROR_TRUNC
  4447.  0013h    SVC_ERROR_PURGING
  4448.  0014h    unsuccessful
  4449.  0018h    CNOS partner logical unit reject
  4450.  0019h    conversation type mixed
  4451.  F001h    APPC disabled
  4452.  F002h    APPC busy
  4453.  F003h    APPC abended
  4454.  F004h    incomplete
  4455.  
  4456. (Table 2931)
  4457. Values for APPC/PC error code:
  4458.  0001h    bad TP ID
  4459.  0002h    bad conversation ID
  4460.  0004h    allocation error, no retry
  4461.  0005h    allocation error, retry
  4462.  0006h    data area crosses segment boundary
  4463.  0010h    bad TPN length
  4464.  0011h    bad CONV length
  4465.  0012h    bad SYNC level
  4466.  0013h    bad security selection
  4467.  0014h    bad return control
  4468.  0015h    SEC_TOKENS too big
  4469.  0016h    PIP_LEN incorrect
  4470.  0017h    no use of SNASVCMG
  4471.  0018h    unknown partner mode
  4472.  0031h    confirm: SYNC_NONE
  4473.  0032h    confirm: bad state
  4474.  0033h    confirm: NOT_LL_BDY
  4475.  0041h    confirmed: bad state
  4476.  0051h    deallocate: bad type
  4477.  0052h    deallocate: flush bad state
  4478.  0053h    deallocate: confirm bad state
  4479.  0055h    deallocate: NOT_LL_BDY
  4480.  0057h    deallocate: log LL_WRONG
  4481.  0061h    flush: not send state
  4482.  0091h    post on receipt: invalid length
  4483.  0092h    post on receipt: not in receive state
  4484.  0093h    post on receipt: bad fill
  4485.  00A1h    prepare to receive:invalid type
  4486.  00A2h    prepare to receive: unfinished LL
  4487.  00A3h    prepare to receive: not in send state
  4488.  00B1h    receive and wait: bad state
  4489.  00B2h    receive and wait: NOT_LL_BDY
  4490.  00B5h    receive and wait: bad fill
  4491.  00C1h    receive immediate: not in receive state
  4492.  00C4h    receive immediate: bad fill
  4493.  00E1h    request to send: not in receive state
  4494.  00F1h    send data: bad LL
  4495.  00F2h    send data: not in send state
  4496.  0102h    send error: log LL wrong
  4497.  0103h    send error: bad type
  4498.  0121h    test: invalid type
  4499.  0122h    test: not in receive state
  4500. --------N-6802--SF0300-----------------------
  4501. INT 68 - APPC/PC - CONNECTION CONTROL - CONFIRM
  4502.     AH = 02h subfn 0300h
  4503.     DS:DX -> control block (see #2932)
  4504. Return: control block updated
  4505. SeeAlso: AH=02h/SF=0400h
  4506.  
  4507. Format of APPC/PC "Confirm" control block:
  4508. Offset    Size    Description    (Table 2932)
  4509.  00h 12 BYTEs    reserved
  4510.  0Ch    WORD    0300h (verb "Confirm" or "MC_Confirm")
  4511.  0Eh    BYTE    1 if MC_ (mapped conversation) form of verb
  4512.         0 if basic verb
  4513.  0Fh  5 BYTEs    reserved (0)
  4514.  14h    WORD    (big-endian) primary return code (see #2930)
  4515.  16h    DWORD    (big-endian) error code (see #2931)
  4516.  1Ah  8 BYTEs    (big-endian) TP_ID
  4517.  22h    DWORD    (big-endian) conversation ID
  4518.  26h    BYTE    request to send received (0=no, 1=yes)
  4519. --------N-6802--SF0400-----------------------
  4520. INT 68 - APPC/PC - CONNECTION CONTROL - CONFIRMED
  4521.     AH = 02h subfn 0400h
  4522.     DS:DX -> control block (see #2933)
  4523. Return: control block updated
  4524. SeeAlso: AH=02h/SF=0300h
  4525.  
  4526. Format of APPC/PC "Confirmed" control block:
  4527. Offset    Size    Description    (Table 2933)
  4528.  00h 12 BYTEs    reserved
  4529.  0Ch    WORD    0400h (verb "Confirmed" or "MC_Confirmed")
  4530.  0Eh    BYTE    1 if MC_ (mapped conversation) form of verb
  4531.         0 if basic verb
  4532.  0Fh  5 BYTEs    reserved (0)
  4533.  14h    WORD    (big-endian) primary return code (see #2930)
  4534.  16h    DWORD    (big-endian) error code (see #2931)
  4535.  1Ah  8 BYTEs    (big-endian) TP_ID
  4536.  22h    DWORD    (big-endian) conversation ID
  4537. --------N-6802--SF0500-----------------------
  4538. INT 68 - APPC/PC - CONNECTION CONTROL - DEALLOCATE
  4539.     AH = 02h subfn 0500h
  4540.     DS:DX -> control block (see #2934)
  4541. Return: control block updated
  4542. SeeAlso: AH=02h/SF=0100h,AH=02h/SF=0300h
  4543.  
  4544. Format of APPC/PC "Deallocate" control block:
  4545. Offset    Size    Description    (Table 2934)
  4546.  00h 12 BYTEs    reserved
  4547.  0Ch    WORD    0500h (verb "Deallocate" or "MC_Deallocate")
  4548.  0Eh    BYTE    1 if MC_ (mapped conversation) form of verb
  4549.         0 if basic verb
  4550.  0Fh  5 BYTEs    reserved (0)
  4551.  14h    WORD    (big-endian) primary return code (see #2930)
  4552.  16h    DWORD    (big-endian) error code (see #2931)
  4553.  1Ah  8 BYTEs    (big-endian) TP_ID
  4554.  22h    DWORD    (big-endian) conversation ID
  4555.  26h    BYTE    00h
  4556.  27h    BYTE    type
  4557.         00h SYNC_LEVEL
  4558.         01h FLUSH
  4559.         02h ABEND_PROC
  4560.         03h ABEND_SVC
  4561.         04h ABEND_TIMER
  4562.         05h ABEND
  4563.  28h    WORD    (MC_Deallocate only) length of error log data
  4564.  2Ah    DWORD    (MC_Deallocate only) pointer to error log data
  4565. --------N-6802--SF0600-----------------------
  4566. INT 68 - APPC/PC - CONNECTION CONTROL - FLUSH
  4567.     AH = 02h subfn 0600h
  4568.     DS:DX -> control block (see #2935)
  4569. Return: control block updated
  4570. SeeAlso: AH=02h/SF=0300h
  4571.  
  4572. Format of APPC/PC "Flush" control block:
  4573. Offset    Size    Description    (Table 2935)
  4574.  00h 12 BYTEs    reserved
  4575.  0Ch    WORD    0600h (verb "Flush" or "MC_Flush")
  4576.  0Eh    BYTE    1 if MC_ (mapped conversation) form of verb
  4577.         0 if basic verb
  4578.  0Fh  5 BYTEs    reserved (0)
  4579.  14h    WORD    (big-endian) primary return code (see #2930)
  4580.  16h    DWORD    (big-endian) error code (see #2931)
  4581.  1Ah  8 BYTEs    (big-endian) TP_ID
  4582.  22h    DWORD    (big-endian) conversation ID
  4583. --------N-6802--SF0700-----------------------
  4584. INT 68 - APPC/PC - CONNECTION CONTROL - GET ATTRIBUTES
  4585.     AH = 02h subfn 0700h
  4586.     DS:DX -> control block (see #2936)
  4587. Return: control block updated
  4588. SeeAlso: AH=02h/SF=0300h
  4589.  
  4590. Format of APPC/PC "Get_Attributes" control block:
  4591. Offset    Size    Description    (Table 2936)
  4592.  00h 12 BYTEs    reserved
  4593.  0Ch    WORD    0700h (verb "Get_Attributes" or "MC_Get_Attributes")
  4594.  0Eh    BYTE    1 if MC_ (mapped conversation) form of verb
  4595.         0 if basic verb
  4596.  0Fh  5 BYTEs    reserved (0)
  4597.  14h    WORD    (big-endian) primary return code (see #2930)
  4598.  16h    DWORD    (big-endian) error code (see #2931)
  4599.  1Ah  8 BYTEs    (big-endian) TP_ID
  4600.  22h    DWORD    (big-endian) conversation ID
  4601.  26h  8 BYTEs    (big-endian) logical unit ID
  4602.  2Eh    BYTE    00h
  4603.  2Fh    BYTE    SYNC_LEVEL (0=none, 1=confirm)
  4604.  30h  8 BYTEs    (big-endian) mode name
  4605.  38h  8 BYTEs    (big-endian) own net name
  4606.  40h  8 BYTEs    (big-endian) own logical unit name
  4607.  48h  8 BYTEs    (big-endian) partner logical unit name
  4608.  50h 18 BYTEs    (counted string) partner's fully qualified logical unit name
  4609.  62h    BYTE    00h
  4610.  63h 11 BYTEs    (counted string) user ID
  4611. --------N-6802--SF0800-----------------------
  4612. INT 68 - APPC/PC - CONNECTION CONTROL - GET CONVERSATION TYPE
  4613.     AH = 02h subfn 0800h
  4614.     DS:DX -> control block (see #2937)
  4615. Return: control block updated
  4616. SeeAlso: AH=02h/SF=0300h
  4617.  
  4618. Format of APPC/PC "Get_Type" control block:
  4619. Offset    Size    Description    (Table 2937)
  4620.  00h 12 BYTEs    reserved
  4621.  0Ch    WORD    0800h (verb "Get_Type")
  4622.  0Eh    BYTE    1 if MC_ (mapped conversation) form of verb
  4623.         0 if basic verb
  4624.  0Fh  5 BYTEs    reserved (0)
  4625.  14h    WORD    (big-endian) primary return code (see #2930)
  4626.  16h    DWORD    (big-endian) error code (see #2931)
  4627.  1Ah  8 BYTEs    (big-endian) TP_ID
  4628.  22h    DWORD    (big-endian) conversation ID
  4629.  26h    BYTE    (ret) type (0=basic conversation, 1=mapped conversation)
  4630. --------N-6802--SF0900-----------------------
  4631. INT 68 - APPC/PC - CONNECTION CONTROL - POST ON RECEIPT
  4632.     AH = 02h subfn 0900h
  4633.     DS:DX -> control block (see #2938)
  4634. Return: control block updated
  4635. SeeAlso: AH=02h/SF=0A00h
  4636.  
  4637. Format of APPC/PC "Post_on_Receipt" control block:
  4638. Offset    Size    Description    (Table 2938)
  4639.  00h 12 BYTEs    reserved
  4640.  0Ch    WORD    0900h (verb "Post_on_Receipt")
  4641.  0Eh    BYTE    1 if MC_ (mapped conversation) form of verb
  4642.         0 if basic verb
  4643.  0Fh  5 BYTEs    reserved (0)
  4644.  14h    WORD    (big-endian) primary return code (see #2930)
  4645.  16h    DWORD    (big-endian) error code (see #2931)
  4646.  1Ah  8 BYTEs    (big-endian) TP_ID
  4647.  22h    DWORD    (big-endian) conversation ID
  4648.  26h    WORD    maximum length
  4649.  28h    BYTE    fill (0=buffer, 1=LL)
  4650. --------N-6802--SF0A00-----------------------
  4651. INT 68 - APPC/PC - CONNECTION CONTROL - PREPARE TO RECEIVE
  4652.     AH = 02h subfn 0A00h
  4653.     DS:DX -> control block (see #2939)
  4654. Return: control block updated
  4655. SeeAlso: AH=02h/SF=0900h,AH=02h/SF=0B00h
  4656.  
  4657. Format of APPC/PC "Prepare_to_Receive" control block:
  4658. Offset    Size    Description    (Table 2939)
  4659.  00h 12 BYTEs    reserved
  4660.  0Ch    WORD    0A00h (verb "Prepare_to_Receive" or "MC_Prepare_to_Receive")
  4661.  0Eh    BYTE    1 if MC_ (mapped conversation) form of verb
  4662.         0 if basic verb
  4663.  0Fh  5 BYTEs    reserved (0)
  4664.  14h    WORD    (big-endian) primary return code (see #2930)
  4665.  16h    DWORD    (big-endian) error code (see #2931)
  4666.  1Ah  8 BYTEs    (big-endian) TP_ID
  4667.  22h    DWORD    (big-endian) conversation ID
  4668.  26h    BYTE    type (0=SYNC_LEVEL, 1=FLUSH)
  4669.  27h    BYTE    locks (0=short, 1=long)
  4670. --------N-6802--SF0B00-----------------------
  4671. INT 68 - APPC/PC - CONNECTION CONTROL - RECEIVE AND WAIT
  4672.     AH = 02h subfn 0B00h
  4673.     DS:DX -> control block (see #2940)
  4674. Return: control block updated
  4675. SeeAlso: AH=02h/SF=0C00h,AH=02h/SF=0F00h
  4676.  
  4677. Format of APPC/PC "Receive_and_Wait" control block:
  4678. Offset    Size    Description    (Table 2940)
  4679.  00h 12 BYTEs    reserved
  4680.  0Ch    WORD    0B00h (verb "Receive_and_Wait" or "MC_Receive_and_Wait")
  4681.  0Eh    BYTE    1 if MC_ (mapped conversation) form of verb
  4682.         0 if basic verb
  4683.  0Fh  5 BYTEs    reserved (0)
  4684.  14h    WORD    (big-endian) primary return code (see #2930)
  4685.  16h    DWORD    (big-endian) error code (see #2931)
  4686.  1Ah  8 BYTEs    (big-endian) TP_ID
  4687.  22h    DWORD    (big-endian) conversation ID
  4688.  26h    BYTE    type of information received (see #2941)
  4689.  27h    BYTE    (MC_Receive_and_Wait only) fill (0=buffer, 1=LL)
  4690.  28h    BYTE    Request_to_Send_Received (0=no, 1=yes)
  4691.  29h    WORD    maximum length
  4692.  2Bh    WORD    data length
  4693.  2Dh    DWORD    pointer to data
  4694.  
  4695. (Table 2941)
  4696. Values for type of information received:
  4697.  00h    data
  4698.  01h    data complete
  4699.  02h    data incomplete
  4700.  03h    confirm
  4701.  04h    confirm send
  4702.  05h    confirm deallocate
  4703.  06h    send
  4704. --------N-6802--SF0C00-----------------------
  4705. INT 68 - APPC/PC - CONNECTION CONTROL - RECEIVE IMMEDIATE
  4706.     AH = 02h subfn 0C00h
  4707.     DS:DX -> control block (see #2942)
  4708. Return: control block updated
  4709. SeeAlso: AH=02h/SF=0B00h,AH=02h/SF=0F00h
  4710.  
  4711. Format of APPC/PC "Receive_Immediate" control block:
  4712. Offset    Size    Description    (Table 2942)
  4713.  00h 12 BYTEs    reserved
  4714.  0Ch    WORD    0C00h (verb "Receive_Immediate" or "MC_Receive_Immediate")
  4715.  0Eh    BYTE    1 if MC_ (mapped conversation) form of verb
  4716.         0 if basic verb
  4717.  0Fh  5 BYTEs    reserved (0)
  4718.  14h    WORD    (big-endian) primary return code (see #2930)
  4719.  16h    DWORD    (big-endian) error code (see #2931)
  4720.  1Ah  8 BYTEs    (big-endian) TP_ID
  4721.  22h    DWORD    (big-endian) conversation ID
  4722.  26h    BYTE    type of information received (see #2941)
  4723.  27h    BYTE    (MC_Receive_Immediate only) fill (0=buffer, 1=LL)
  4724.  28h    BYTE    Request_to_Send_Received (0=no, 1=yes)
  4725.  29h    WORD    maximum length
  4726.  2Bh    WORD    data length
  4727.  2Dh    DWORD    pointer to data
  4728. --------N-6802--SF0E00-----------------------
  4729. INT 68 - APPC/PC - CONNECTION CONTROL - REQUEST TO SEND
  4730.     AH = 02h subfn 0E00h
  4731.     DS:DX -> control block (see #2943)
  4732. Return: control block updated
  4733. SeeAlso: AH=02h/SF=0F00h,AH=02h/SF=1000h
  4734.  
  4735. Format of APPC/PC "Request_to_Send" control block:
  4736. Offset    Size    Description    (Table 2943)
  4737.  00h 12 BYTEs    reserved
  4738.  0Ch    WORD    0E00h (verb "Request_to_Send" or "MC_Request_to_Send")
  4739.  0Eh    BYTE    1 if MC_ (mapped conversation) form of verb
  4740.         0 if basic verb
  4741.  0Fh  5 BYTEs    reserved (0)
  4742.  14h    WORD    (big-endian) primary return code (see #2930)
  4743.  16h    DWORD    (big-endian) error code (see #2931)
  4744.  1Ah  8 BYTEs    (big-endian) TP_ID
  4745.  22h    DWORD    (big-endian) conversation ID
  4746. --------N-6802--SF0F00-----------------------
  4747. INT 68 - APPC/PC - CONNECTION CONTROL - SEND DATA
  4748.     AH = 02h subfn 0F00h
  4749.     DS:DX -> control block (see #2944)
  4750. Return: control block updated
  4751. SeeAlso: AH=02h/SF=0E00h,AH=02h/SF=1000h
  4752.  
  4753. Format of APPC/PC "Send_Data" control block:
  4754. Offset    Size    Description    (Table 2944)
  4755.  00h 12 BYTEs    reserved
  4756.  0Ch    WORD    0F00h (verb "Send_Data" or "MC_Send_Data")
  4757.  0Eh    BYTE    1 if MC_ (mapped conversation) form of verb
  4758.         0 if basic verb
  4759.  0Fh  5 BYTEs    reserved (0)
  4760.  14h    WORD    (big-endian) primary return code (see #2930)
  4761.  16h    DWORD    (big-endian) error code (see #2931)
  4762.  1Ah  8 BYTEs    (big-endian) TP_ID
  4763.  22h    DWORD    (big-endian) conversation ID
  4764.  26h    BYTE    request to send received (0=no, 1=yes)
  4765.  27h    BYTE    00h
  4766.  28h    WORD    data length
  4767.  2Ah    DWORD    pointer to data
  4768. --------N-6802--SF1000-----------------------
  4769. INT 68 - APPC/PC - CONNECTION CONTROL - SEND ERROR
  4770.     AH = 02h subfn 1000h
  4771.     DS:DX -> control block (see #2945)
  4772. Return: control block updated
  4773. SeeAlso: AH=02h/SF=0F00h
  4774.  
  4775. Format of APPC/PC "Send_Error" control block:
  4776. Offset    Size    Description    (Table 2945)
  4777.  00h 12 BYTEs    reserved
  4778.  0Ch    WORD    1000h (verb "Send_Error" or "MC_Send_Error")
  4779.  0Eh    BYTE    1 if MC_ (mapped conversation) form of verb
  4780.         0 if basic verb
  4781.  0Fh  5 BYTEs    reserved (0)
  4782.  14h    WORD    (big-endian) primary return code (see #2930)
  4783.  16h    DWORD    (big-endian) error code (see #2931)
  4784.  1Ah  8 BYTEs    (big-endian) TP_ID
  4785.  22h    DWORD    (big-endian) conversation ID
  4786.  26h    BYTE    request to send received (0=no, 1=yes)
  4787.  27h    BYTE    type (0=program, 1=SVC)
  4788.  28h    DWORD    00h
  4789.  2Ch    WORD    (MC_Send_Error only) LOG_DATA length
  4790.  2Eh    DWORD    (MC_Send_Error only) pointer to LOG_DATA
  4791. --------N-6802--SF1200-----------------------
  4792. INT 68 - APPC/PC - CONNECTION CONTROL - TEST
  4793.     AH = 02h subfn 1200h
  4794.     DS:DX -> control block (see #2946)
  4795. Return: control block updated
  4796. SeeAlso: AH=02h/SF=1300h
  4797.  
  4798. Format of APPC/PC "Test" control block:
  4799. Offset    Size    Description    (Table 2946)
  4800.  00h 12 BYTEs    reserved
  4801.  0Ch    WORD    1200h (verb "Test" or "MC_Test")
  4802.  0Eh    BYTE    1 if MC_ (mapped conversation) form of verb
  4803.         0 if basic verb
  4804.  0Fh  5 BYTEs    reserved (0)
  4805.  14h    WORD    (big-endian) primary return code (see #2930)
  4806.  16h    DWORD    (big-endian) error code (see #2931)
  4807.  1Ah  8 BYTEs    (big-endian) TP_ID
  4808.  22h    DWORD    (big-endian) conversation ID
  4809.  26h    BYTE    (MC_Test only) test (0=posted, 1=request_to_send received)
  4810. Note:    error code has different interpretations for:
  4811.     0 posted data
  4812.     1 posted not data (primary return code = 0)
  4813.     1 bad TP_ID (primary return code = 1)
  4814. --------N-6802--SF1300-----------------------
  4815. INT 68 - APPC/PC - CONNECTION CONTROL - WAIT
  4816.     AH = 02h subfn 1300h
  4817.     DS:DX -> control block (see #2947)
  4818. Return: control block updated
  4819. SeeAlso: AH=02h/SF=1200h
  4820.  
  4821. Format of APPC/PC "Wait" control block:
  4822. Offset    Size    Description    (Table 2947)
  4823.  00h 12 BYTEs    reserved
  4824.  0Ch    WORD    1300h (verb "Wait")
  4825.  0Eh    BYTE    1 if MC_ (mapped conversation) form of verb
  4826.         0 if basic verb
  4827.  0Fh  5 BYTEs    reserved (0)
  4828.  14h    WORD    (big-endian) primary return code (see #2930)
  4829.  16h    DWORD    (big-endian) error code (see #2931,#2946)
  4830.  1Ah  8 BYTEs    (big-endian) TP_ID
  4831.  22h    DWORD    (big-endian) conversation ID
  4832.  26h    BYTE    number of conversations to wait on
  4833.         Note: error codes have interpretations as for AH=02h/SF=1200h
  4834. --------N-6803--SF2400-----------------------
  4835. INT 68 - APPC/PC - TP STARTED
  4836.     AH = 03h subfn 2400h
  4837.     DS:DX -> control block (see #2948)
  4838. Return: control block updated
  4839.  
  4840. Format of APPC/PC "TP Started" control block:
  4841. Offset    Size    Description    (Table 2948)
  4842.  00h 12 BYTEs    reserved
  4843.  0Ch    WORD    2400h (verb "TP Started")
  4844.  0Eh  6 BYTEs    00h
  4845.  14h    DWORD    (big-endian) return code (see #2917)
  4846.  18h    WORD    00h
  4847.  1Ah  8 BYTEs    (big-endian) logical unit ID
  4848.  22h  8 BYTEs    (big-endian) TP ID
  4849. --------N-6803--SF2800-----------------------
  4850. INT 68 - APPC/PC - GET ALLOCATE
  4851.     AH = 03h subfn 2800h
  4852.     DS:DX -> control block (see #2949)
  4853. Return: control block updated
  4854.  
  4855. Format of APPC/PC "Get ALLOCATE" control block:
  4856. Offset    Size    Description    (Table 2949)
  4857.  00h 12 BYTEs    reserved
  4858.  0Ch    WORD    2800h (verb "Get ALLOCATE")
  4859.  0Eh  6 BYTEs    00h
  4860.  14h    DWORD    (big-endian) return code (see #2917)
  4861.  18h    WORD    00h
  4862.  1Ah  8 BYTEs    (big-endian) logical unit ID
  4863.  22h    BYTE    type (00h dequeue, 01h test)
  4864.  23h    DWORD    pointer to CREATE_TP record
  4865. --------N-6803--SF2A00-----------------------
  4866. INT 68 - APPC/PC - CHANGE LOGICAL UNIT
  4867.     AH = 03h subfn 2A00h
  4868.     DS:DX -> control block (see #2950)
  4869. Return: control block updated
  4870.  
  4871. Format of APPC/PC "Change Logical Unit" control block:
  4872. Offset    Size    Description    (Table 2950)
  4873.  00h 12 BYTEs    reserved
  4874.  0Ch    WORD    2A00h (verb "Change Logical Unit")
  4875.  0Eh  6 BYTEs    00h
  4876.  14h    DWORD    (big-endian) return code (see #2917)
  4877.  18h    WORD    00h
  4878.  1Ah  8 BYTEs    (big-endian) logical unit ID
  4879.  22h    DWORD    pointer to CREATE_TP_EXIT routine
  4880.         00000000h queue ALLOCATEs
  4881.         FFFFFFFFh reject incoming ALLOCATEs
  4882.  26h    DWORD    00000000h
  4883.  2Ah    DWORD    pointer to SYSTEM_LOG_EXIT routine, FFFFFFFFh= don't log errors
  4884.  2Eh    DWORD    00000000h
  4885.  32h    BYTE    maximum TPs
  4886.  33h    BYTE    00h stop QUEUE_ALLOCATEs
  4887.         01h resume QUEUE_ALLOCATEs
  4888.  34h    DWORD    pointer to LU_LU_PASSWORD_EXIT routine, FFFFFFFFh = no exit
  4889.  38h    DWORD    00000000h
  4890. --------N-6804-------------------------------
  4891. INT 68 - APPC/PC - TRANSACTION PROCESSING
  4892.     AH = 04h
  4893.     DS:DX -> control block (see #2951)
  4894. Return: control block updated
  4895.  
  4896. Format of APPC/PC control block:
  4897. Offset    Size    Description    (Table 2951)
  4898.  00h 12 BYTEs    reserved
  4899.  0Ch    WORD    verb (action)
  4900.         2500h TP_ENDED
  4901.         2900h TP_VALID
  4902.  0Eh  6 BYTEs    00h
  4903.  14h    DWORD    (big-endian) return code (see #2917)
  4904.  18h    WORD    00h
  4905.  1Ah  8 BYTEs    (big-endian) TP_ID
  4906.  22h    DWORD    -> CREATE_TP record (only if verb = 2900h)
  4907. --------N-6805-------------------------------
  4908. INT 68 - APPC/PC - TRANSFER MESSAGE DATA
  4909.     AH = 05h
  4910.     DS:DX -> control block (see #2952)
  4911. Return: control block updated
  4912.  
  4913. Format of APPC/PC "Transfer Message Data" control block:
  4914. Offset    Size    Description    (Table 2952)
  4915.  00h 12 BYTEs    reserved
  4916.  0Ch    WORD    1C00h (verb "Transfer Message Data")
  4917.  0Eh    BYTE    data type
  4918.         00h user defined
  4919.         01h NMVT
  4920.         02h alert subvectors
  4921.         03h PDSTATS subvectors
  4922.  0Fh  5 BYTEs    00h
  4923.  14h    DWORD    (big-endian) return code (see #2917)
  4924.  18h 12 BYTEs    00h
  4925.  24h    BYTE    flags (see #2953)
  4926.  25h    BYTE    00h
  4927.  26h    WORD    length of data
  4928.  28h  N BYTEs    data
  4929.  
  4930. Bitfields for APPC/PC message transfer flags:
  4931. Bit(s)    Description    (Table 2953)
  4932.  0    don't add correlation subvector
  4933.  1    don't add product set ID subvector
  4934.  2    don't do SYSLOG
  4935.  3    don't send SSCP_PU_SESSION
  4936. SeeAlso: #2952
  4937. --------N-6806-------------------------------
  4938. INT 68 - APPC/PC - CHANGE NUMBER OF SESSIONS
  4939.     AH = 06h
  4940.     DS:DX -> control block (see #2954)
  4941. Return: control block updated
  4942.  
  4943. Format of APPC/PC "Change Number of Sessions" control block:
  4944. Offset    Size    Description    (Table 2954)
  4945.  00h 12 BYTEs    reserved
  4946.  0Ch    WORD    1500h (verb "Change Number of Sessions")
  4947.  0Eh  6 BYTEs    00h
  4948.  14h    WORD    (big-endian) primary return code (see #2930)
  4949.  16h    DWORD    (big-endian) secondary return code (see #2917,#2955)
  4950.  1Ah  8 BYTEs    (big-endian) logical unit ID
  4951.  22h  8 BYTEs    blanks
  4952.  2Ah  8 BYTEs    (big-endian) partner logical unit name
  4953.  32h  8 BYTEs    (big-endian) mode name
  4954.  3Ah    BYTE    bit 7: use MODE_NAME_SELECT_ALL rather than MODE_NAME
  4955.         bit 6: set negotiable values
  4956.  3Bh    BYTE    partner logical unit mode session limit
  4957.  3Ch    BYTE    minimum CONWINNERS_SOURCE
  4958.  3Dh    BYTE    maximum CONWINNERS_TARGET
  4959.  3Eh    BYTE    automatic activation
  4960.  3Fh    BYTE    00h
  4961.  40h    BYTE    flags
  4962.         bit 7: drain target
  4963.         bit 6: drain source
  4964.         bit 5: target responsible, not source
  4965.  
  4966. (Table 2955)
  4967. Values for secondary return code (see also AH=01h/SF=1B00h):
  4968.  0000h    accepted
  4969.  0001h    negotiated
  4970.  0003h    bad logical unit ID
  4971.  0004h    allocation failure, no retry
  4972.  0005h    allocation failure, retry
  4973.  0151h    can't raise limits
  4974.  0153h    all modes must reset
  4975.  0154h    bad SNASVCMG limits
  4976.  0155h    minimum greater than total
  4977.  0156h    mode closed (primary return code = 1)
  4978.     CNOS mode closed (primary return code = 18h)
  4979.  0157h    bad mode name (primary return code = 1)
  4980.     CNOS bad mode name (primary return code = 18h)
  4981.  0159h    reset SNA drains
  4982.  015Ah    single not SRC response
  4983.  015Bh    bad partner logical unit
  4984.  015Ch    exceeds maximum allowed
  4985.  015Dh    change SRC drains
  4986.  015Eh    logical unit detached
  4987.  015Fh    CNOS command race reject
  4988. --------N-6807-------------------------------
  4989. INT 68 - APPC/PC - PASSTHROUGH
  4990.     AH = 07h
  4991.     DS:DX -> control block (format depends on application subsystem)
  4992. Return: control block updated
  4993. SeeAlso: AH=FFh
  4994. ----------684300-----------------------------
  4995. INT 68 U - ??? - INSTALLATION CHECK???
  4996.     AX = 4300h
  4997. Return: AX = F386h if ???
  4998.     ???
  4999. Note:    called by Novell DOS 7.0 EMM386.EXE
  5000. SeeAlso: AX=4400h,INT 41/AX=004Fh
  5001. ----------684400-----------------------------
  5002. INT 68 U - ???
  5003.     AX = 4400h
  5004.     BX = ???
  5005.     CX = ???
  5006.     DX = ???
  5007.     DS:SI = real-mode address of protected-mode GDT
  5008.     ES:DI = real-mode address of protected-mode IDT
  5009. Return: ???
  5010. Note:    called by Novell DOS 7.0 EMM386.EXE if AX=4300h returns AX=F386h
  5011. SeeAlso: AX=4300h
  5012. --------W-6847-------------------------------
  5013. INT 68 - MS Windows debugging kernel - OUTPUT STRING
  5014.     AH = 47h
  5015.     ES:SI -> string
  5016. Notes:    output a string (to inform a debugger of some events)
  5017.     KERNEL outputs "Windows Kernel Entry\r\n" on startup
  5018. SeeAlso: INT 41/AX=0012h
  5019. --------N-68FA-------------------------------
  5020. INT 68 - APPC/PC - ENABLE/DISABLE APPC
  5021.     AH = FAh
  5022.     AL bit 0 = new state (0 enable, 1 disable)
  5023. SeeAlso: AH=FDh,INT 68"Novell"
  5024. --------N-68FB-------------------------------
  5025. INT 68 - APPC/PC - CONVERT
  5026.     AH = FBh
  5027.     DS:DX -> control block (see #2956)
  5028. Return: control block updated
  5029.  
  5030. Format of APPC/PC "CONVERT" control block:
  5031. Offset    Size    Description    (Table 2956)
  5032.  00h 12 BYTEs    reserved
  5033.  0Ch    WORD    1A00h (verb "CONVERT")
  5034.  0Eh  6 BYTEs    00h
  5035.  14h    DWORD    (big-endian) return code
  5036.  18h    BYTE    conversion
  5037.         00h ASCII to EBCDIC
  5038.         01h EBCDIC to ASCII
  5039.  19h    BYTE    character set
  5040.         00h AE
  5041.         01h A
  5042.         02h G
  5043.  1Ah    WORD    length of string to convert
  5044.  1Ch    DWORD    pointer to source
  5045.  20h    DWORD    pointer to target
  5046. --------N-68FC-------------------------------
  5047. INT 68 - APPC/PC - ENABLE/DISABLE MESSAGE TRACING
  5048.     AH = FCh
  5049.     AL = new state
  5050.         00h disable tracing
  5051.         01h enable tracing
  5052.         DX = number of bytes to keep (0=all)
  5053. SeeAlso: AH=FDh,AH=FEh
  5054. --------N-68FD-------------------------------
  5055. INT 68 - APPC/PC - ENABLE/DISABLE API VERB TRACING
  5056.     AH = FDh
  5057.     AL = new tracing state (00h disabled, 01h enabled)
  5058. SeeAlso: AH=FAh,AH=FCh,AH=FEh
  5059. --------N-68FE-------------------------------
  5060. INT 68 - APPC/PC - SET TRACE DESTINATION
  5061.     AH = FEh
  5062.     AL = trace destinations (see #2957)
  5063.     DS:DX -> trace stats record if AL bit 0 set (see #2958)
  5064. SeeAlso: AH=FCh,AH=FDh
  5065.  
  5066. Bitfields for trace destinations:
  5067. Bit(s)    Description    (Table 2957)
  5068.  0    storage (DS:DX -> trace stats record)
  5069.  1    display
  5070.  2    file (trace written to file OUTPUT.PC)
  5071.  3    printer
  5072.  
  5073. Format of APPC/PC Trace Statistics Record:
  5074. Offset    Size    Description    (Table 2958)
  5075.  00h    DWORD    pointer to storage trace buffer
  5076.  04h    WORD    max number of 80-byte records in trace
  5077.  06h    WORD    (high-order byte first!) current record number (must init to 0)
  5078.  08h    DWORD    (high-order byte first!) number of records written (init to 0)
  5079.  0Ch    DWORD    reserved
  5080. Note:    do not move record while trace is active
  5081. --------N-68FF-------------------------------
  5082. INT 68 - APPC/PC - SET PASSTHROUGH
  5083.     AH = FFh
  5084.     DS:DX -> passthrough exit routine
  5085. SeeAlso: AH=07h,INT 68"Novell"
  5086. --------b-69---------------------------------
  5087. INT 69 - Zenith AT BIOS - ???
  5088. Note:    called by INT 09 handler
  5089. --------h-69---------------------------------
  5090. INT 69 C - HP Vectra AT - IRQ17 - KEYBOARD OUTPUT-BUFFER-FULL SERVICE ROUTINE
  5091. SeeAlso: INT 09"IRQ1",INT 68"HP Vectra",INT 6A"HP Vectra"
  5092. --------N-690100-----------------------------
  5093. INT 69 - DECnet DOS CTERM - INSTALLATION CHECK
  5094.     AX = 0100h
  5095. Return: AL = FFh if present
  5096. SeeAlso: AX=010Fh
  5097. --------N-690101-----------------------------
  5098. INT 69 - DECnet DOS CTERM - SEND BYTE
  5099.     AX = 0101h
  5100.     BL = character
  5101.     DX = session handle
  5102. Return: AH >= 80h on error
  5103. SeeAlso: AX=0102h
  5104. --------N-690102-----------------------------
  5105. INT 69 - DECnet DOS CTERM - READ BYTE
  5106.     AX = 0102h
  5107.     DX = session handle
  5108. Return: AH >= 80h on error
  5109.     AH < 80h if successful
  5110.         AL = character
  5111. SeeAlso: AX=0101h
  5112. --------N-690103-----------------------------
  5113. INT 69 - DECnet DOS CTERM - STATUS
  5114.     AX = 0103h
  5115.     DX = session handle
  5116. Return: AH status flags (see #2959)
  5117.     AL = reason code if DECnet error (see #2960)
  5118. SeeAlso: AX=0104h
  5119.  
  5120. Bitfields for DECnet DOS CTERM status flags:
  5121. Bit(s)    Description    (Table 2959)
  5122.  7    session has been aborted
  5123.  6    DECnet error
  5124.  1    trace data available
  5125.  0    receive data available
  5126.  
  5127. (Table 2960)
  5128. Values for reason code:
  5129.  00h    normal disconnect
  5130.  01h    unknown message from host
  5131.  02h    protocol violation from host
  5132.  03h    could not process the initiate message
  5133.  04h    error receiving message from host
  5134.  05h    error sending message to host
  5135.  06h    error checking for message from host
  5136.  07h    remote system does not support CTERM
  5137.  08h    remote system does not support correct protocol version
  5138.  09h    did not receive BIND message from host
  5139.  0Ah    could not send BIND message to host
  5140.  0Bh    no more sessions available
  5141.  0Ch    session does not exist
  5142.  0Dh    not enough memory to complete operation
  5143.  0Eh    connection has broken
  5144. Index:    error codes;DECnet DOS CTERM|DECnet DOS CTERM;error codes
  5145. --------N-690104-----------------------------
  5146. INT 69 - DECnet DOS CTERM - DECnet STATUS
  5147.     AX = 0104h
  5148.     DX = session handle
  5149. Return: AX = reason code (see #2960)
  5150. Note:    use this call when AX=0103h returns a DECnet error
  5151. SeeAlso: AX=0103h
  5152. --------N-690105-----------------------------
  5153. INT 69 - DECnet DOS CTERM - OPEN SESSION
  5154.     AX = 0105h
  5155.     DS:BX -> ASCIZ node name
  5156.     ES:DX -> buffer for session control block (see #2976 at INT 6A/AH=D0h)
  5157. Return: AX <= 0 on error
  5158.     AX > 0 session handle
  5159. SeeAlso: AX=0103h,AX=0106h,AX=010Ah
  5160. --------N-690106-----------------------------
  5161. INT 69 - DECnet DOS CTERM - CLOSE SESSION
  5162.     AX = 0106h
  5163.     DX = session handle
  5164. Return: AH = status
  5165.         00h good close
  5166.         other error code (see #2960)
  5167. SeeAlso: AX=0103h,AX=0105h
  5168. --------N-69010A-----------------------------
  5169. INT 69 - DECnet DOS CTERM - GET SESSION CONTROL BLOCK SIZE
  5170.     AX = 010Ah
  5171. Return: AX = length of session control block in bytes
  5172. SeeAlso: AX=0105h
  5173. --------N-69010B-----------------------------
  5174. INT 69 - DECnet DOS CTERM - GET DECnet SOCKET
  5175.     AX = 010Bh
  5176.     DX = session handle
  5177. Return: AX > 0    DECnet socket for the session
  5178.     AX = 0    no match for handle
  5179. --------N-69010F-----------------------------
  5180. INT 69 - DECnet DOS CTERM - DEINSTALL CTERM
  5181.     AX = 010Fh
  5182. Return: AH = status
  5183.         00h successful uninstall
  5184.         other error code (see #2960)
  5185. Note:    CTERM must have been the last TSR loaded in order to deinstall it
  5186. SeeAlso: AX=0100h
  5187. Index:    uninstall;DECnet DOS CTERM
  5188. --------N-690A-------------------------------
  5189. INT 69 - DECnet DOS 2.1+ - DATA LINK LAYER
  5190.     AH = 0Ah
  5191.     AL = function number (see #2961)
  5192.     ES:BX -> Datalink Communication Block (see #2963)
  5193. Return: AX = status (see #2962)
  5194. SeeAlso: INT 6D"DECnet"
  5195.  
  5196. (Table 2961)
  5197. Values for DECnet DOS Data Link Layer function:
  5198.  00h    initialize
  5199.  01h    open portal
  5200.  02h    close portal
  5201.  03h    enable multicast address
  5202.  04h    disable multicast address
  5203.  05h    transmit
  5204.  06h    request transmit buffer
  5205.  07h    deallocate transmit buffer
  5206.  08h    read channel status
  5207.  09h    read datalink portal list
  5208.  0Ah    read information about a datalink portal
  5209.  0Bh    read and/or clear counters
  5210.  0Ch    request to boot from a network server
  5211.  0Dh    enable Ethernet channel
  5212.  0Eh    disable Ethernet channel
  5213.  0Fh    start MOP/send a System ID message
  5214.  10h    stop MOP
  5215.  11h    get DECPARM
  5216.  12h    set DECPARM
  5217.  13h    external loopback
  5218.  
  5219. (Table 2962)
  5220. Values for DECnet DOS Data Link Layer status:
  5221.  00h    successful
  5222.  01h    hardware failed to initialize
  5223.  02h    channel state was not off (must be off to execute that command)
  5224.  03h    channel state is off (must be on to execute that command)
  5225.  04h    address not set
  5226.  05h    hardware missing
  5227.  06h    buffer too small
  5228.  07h    no more buffers available
  5229.  08h    no more resources available
  5230.  09h    promiscuous receiver active
  5231.  0Ah    non exclusive
  5232.  0Bh    unrecognized portal
  5233.  0Ch    protocol type in use
  5234.  0Dh    not a valid Multicast address
  5235.  0Eh    outstanding calls
  5236.  0Fh    hardware doesn't support receiving bad frames
  5237.  10h    none outstanding
  5238.  11h    no events
  5239.  12h    broken
  5240.  13h    buffer quota exceeded
  5241.  14h    already initialized
  5242.  15h    loopback failure
  5243. Index:    error codes;DECnet DOS|DECnet DOS;error codes
  5244.  
  5245. Format of Datalink Communication Block:
  5246. Offset    Size    Description    (Table 2963)
  5247.  00h    WORD    portal ID
  5248.  02h  6 BYTEs    source address
  5249.  08h  6 BYTEs    destination address
  5250.  0Eh    DWORD    buffer pointer
  5251.  12h    WORD    buffer length
  5252.  14h    WORD    operation
  5253.  16h    BYTE    pad flag (used on open)
  5254.         00h no pad
  5255.         01h pad
  5256.  17h    BYTE    mode flag (used on open)
  5257.         00h 802.3
  5258.         01h Ethernet
  5259.         02h promiscuous
  5260.  18h    DWORD    line status change function
  5261.  1Ch    DWORD    received data function
  5262.  20h    DWORD    transmitted data function
  5263.  24h    BYTE    maximum outstanding transmits/receives
  5264.  25h  2 BYTEs    protocol type
  5265.  27h    WORD    buffers lost
  5266. --------N-694001-----------------------------
  5267. INT 69 - 10NET v5.0 - SYSSVC.COM - ???
  5268.     AX = 4001h
  5269. Return: CF clear
  5270.     AX = 0000h
  5271.     ES:SI -> ???
  5272. Range:    INT 60 to INT 7F, selected by configuration
  5273. Note:    the signature "SYSV" immediately before the interrupt handler serves
  5274.       as the installation check
  5275. SeeAlso: AX=4002h
  5276. Index:    installation check;10NET SYSSVC
  5277. --------N-694002-----------------------------
  5278. INT 69 - 10NET v5.0 - SYSSVC.COM - ???
  5279.     AX = 4002h
  5280.     ???
  5281. Return: ???
  5282. Range:    INT 60 to INT 7F, selected by configuration
  5283. Note:    the signature "SYSV" immediately before the interrupt handler serves
  5284.       as the installation check
  5285. --------N-694101-----------------------------
  5286. INT 69 - 10NET v5.0 - SYSSVC.COM - ???
  5287.     AX = 4101h
  5288. Return: CF clear
  5289.     ES:SI -> ???
  5290. Range:    INT 60 to INT 7F, selected by configuration
  5291. SeeAlso: AX=4102h,AX=4103h,AX=4104h
  5292. --------N-694102-----------------------------
  5293. INT 69 - 10NET v5.0 - SYSSVC.COM - ???
  5294.     AX = 4102h
  5295.     ???
  5296. Return: ???
  5297. --------N-694103-----------------------------
  5298. INT 69 - 10NET v5.0 - SYSSVC.COM - ???
  5299.     AX = 4103h
  5300.     ???
  5301. Return: ???
  5302. --------N-694104-----------------------------
  5303. INT 69 - 10NET v5.0 - SYSSVC.COM - ???
  5304.     AX = 4104h
  5305.     ???
  5306. Return: ???
  5307. --------N-6942-------------------------------
  5308. INT 69 - 10NET v5.0 - SYSSVC.COM - ???
  5309.     AH = 42h
  5310.     AL = function (01h-14h)
  5311.     ???
  5312. Return: ???
  5313. Range:    INT 60 to INT 7F, selected by configuration
  5314. --------N-6943-------------------------------
  5315. INT 69 - 10NET v5.0 - SYSSVC.COM - ???
  5316.     AH = 43h
  5317.     AL = function (01h-05h)
  5318.     ???
  5319. Return: ???
  5320. --------N-6944-------------------------------
  5321. INT 69 - 10NET v5.0 - SYSSVC.COM - ???
  5322.     AH = 44h
  5323.     AL = function (01h-03h)
  5324.     ???
  5325. Return: ???
  5326. Range:    INT 60 to INT 7F, selected by configuration
  5327. --------N-6949-------------------------------
  5328. INT 69 - 10NET v5.0 - SYSSVC.COM - BUG
  5329.     AH = 49h
  5330. Note:    due to a fencepost error, this function branches to hyperspace
  5331. SeeAlso: AX=4001h,AH=FFh
  5332. --------G-696996-----------------------------
  5333. INT 69 - ISR.COM v1.00 - SPECIFY INTERRUPT HANDLER
  5334.     AX = 6996h
  5335.     DS:DX -> interrupt handler or 0000h:0000h to disable
  5336. Return: AX = 9669h
  5337. Program: ISR (Interrupt Service Reflector) is a TSR by Rich Bono which permits
  5338.       a program to provide hardware interrupt handlers even while being
  5339.       debugged with a debugger that swaps interrupt vectors during
  5340.       debugging.
  5341. Note:    the interrupt vector which is to be reflected is set at installation
  5342.       time and cannot be changed
  5343. --------N-69FF-------------------------------
  5344. INT 69 - 10NET v5.0 - SYSSVC.COM - SIGNAL SYSTEM ERROR
  5345.     AH = FFh
  5346. Return: never???
  5347. Desc:    displays "System Error" message and register dump, then halts system
  5348. Range:    INT 60 to INT 7F, selected by configuration
  5349. Notes:    the signature "SYSV" immediately before the interrupt handler serves
  5350.       as the installation check
  5351. SeeAlso: AX=4001h,AH=49h
  5352. --------U-6A---------------------------------
  5353. INT 6A - OPTHELP.COM
  5354. Program: OPTHELP is an optionally-resident help system for SLR Systems's OPTASM
  5355.       assembler
  5356. Range:    INT 60h to INT 7Fh, selected by configuration
  5357. --------N-6A---------------------------------
  5358. INT 6A - DECnet DOS - LOCAL AREA TRANSPORT PROGRAM - INSTALLATION CHECK
  5359. Note:    the installation check consists of testing for a signature area
  5360.       immediately preceding the interrupt handler (see #2964)
  5361. SeeAlso: AH=01h/DH=FFh,INT 6B"DECnet",INT 6D"DECnet"
  5362. Index:    installation check;DECnet DOS Local Area Transport
  5363.  
  5364. Format of DECnet DOS signature area:
  5365. Offset    Size    Description    (Table 2964)
  5366.  -5    BYTE    major version number
  5367.  -4    BYTE    minor version number
  5368.  -3   3 BYTEs    signature (ASCII "LAT")
  5369. --------h-6A---------------------------------
  5370. INT 6A C - HP Vectra AT - IRQ18 - RESERVED HARDWARE INTERRUPT
  5371. SeeAlso: INT 0A"IRQ2",INT 69"HP Vectra",INT 6B"HP Vectra"
  5372. --------N-6A0000-----------------------------
  5373. INT 6A U - Super-TCP DOS TSR Kernel v3.57 - INSTALLATION CHECK
  5374.     AX = 0000h
  5375. Return: AX = 4357h ('CW')
  5376. Program: Super-TCP is a TCP/IP protocol stack by Frontier Technologies Corp.
  5377. Note:    an alternate installation check is to test for the ASCIZ signature
  5378.       "FTC Super-TCP" three bytes past the interrupt handler
  5379. SeeAlso: AX=0001h,AX=0002h,AX=000Fh,AX=0010h,INT 21/AH=3Fh"BW-TCP"
  5380. SeeAlso: INT 61"FTP Software",INT 62/AH=00h"ETHDEV"
  5381. --------N-6A0001-----------------------------
  5382. INT 6A U - Super-TCP DOS TSR Kernel v3.57 - ???
  5383.     AX = 0001h
  5384.     BH = function number
  5385.         01h ???
  5386.         DS:SI -> ??? 24-byte record1 (see #2966)
  5387.         ES:DI -> buffer containing ???
  5388.         02h ???
  5389.         DS:SI -> ??? 18-byte record2 (see #2967)
  5390.         ES:DI -> buffer containing ???
  5391.         04h ???
  5392.         BL = subfunction
  5393.             01h
  5394.             DS:SI -> ??? 28-byte record3 (see #2968)
  5395.             ES:DI -> buffer containing ???
  5396.             02h
  5397.             DS:SI -> ??? 28-byte record3 (see #2968)
  5398.             ES:DI -> buffer containing ???
  5399.             03h
  5400.             DS:SI -> ??? 28-byte record3 (see #2968)
  5401.             else Return: AX = 0005h
  5402.         05h ???
  5403.         DS:SI -> ??? 20-byte record4 (see #2969)
  5404.         ES:DI -> buffer containing ???
  5405.         06h ???
  5406.         BL = subfunction
  5407.             01h
  5408.             DS:SI -> ??? 40-byte record5 (see #2970)
  5409.             02h
  5410.             DS:SI -> ??? 20-byte record6 (see #2971)
  5411.             ES:DI -> ???
  5412.             03h
  5413.             DS:SI -> ??? 20-byte record6 (see #2971)
  5414.             04h
  5415.             DS:SI -> ??? 46-byte record7 (see #2972)
  5416.             else Return: AX = 0005h
  5417.         11h ???
  5418.         DS:SI -> ??? 28-byte record8 (see #2973)
  5419.         ES:DI -> ???
  5420. Return: AX = function status (see #2965)
  5421. SeeAlso: AX=0000h
  5422.  
  5423. (Table 2965)
  5424. Values for Super-TCP function status:
  5425.  0000h    successful
  5426.  0005h    unsupported function
  5427.  000Ah    out of memory
  5428.  
  5429. Format of record1:
  5430. Offset    Size    Description    (Table 2966)
  5431.  00h  4 BYTEs    ???
  5432.  04h    WORD    size of ES:DI buffer
  5433.  06h 18 BYTEs    ???
  5434.  
  5435. Format of record2:
  5436. Offset    Size    Description    (Table 2967)
  5437.  00h  4 BYTEs    ???
  5438.  04h    WORD    size of ES:DI buffer
  5439.  06h 12 BYTEs    ???
  5440.  
  5441. Format of record3:
  5442. Offset    Size    Description    (Table 2968)
  5443.  00h  2 BYTEs    ???
  5444.  02h    WORD    ???
  5445.  04h    WORD    size of ES:DI buffer
  5446.  06h    WORD    ???
  5447.  08h    WORD    operation number (for function 0401h)
  5448.  0Ah    DWORD    -> ???
  5449.  0Eh    WORD    (ret) ???
  5450.  10h 12 BYTEs    ???
  5451.  
  5452. Format of record4:
  5453. Offset    Size    Description    (Table 2969)
  5454.  00h  4 BYTEs    ???
  5455.  04h    WORD    size of ES:DI buffer
  5456.  06h 14 BYTEs    ???
  5457.  
  5458. Format of record5:
  5459. Offset    Size    Description    (Table 2970)
  5460.  00h    BYTE    operation??? (00h-07h)
  5461.  01h    BYTE    ???
  5462.  02h    WORD    (ret) ???
  5463.  04h    DWORD    -> ???
  5464.  08h  4 BYTEs    ???
  5465.  0Ch    DWORD    -> ??? or 0000h:0000h
  5466.  10h 16 BYTEs    ???
  5467.  20h    DWORD    ???
  5468.  24h  4 BYTEs    ???
  5469.  
  5470. Format of record6:
  5471. Offset    Size    Description    (Table 2971)
  5472.  00h  4 BYTEs    ???
  5473.  04h    WORD    size of ES:DI buffer
  5474.  06h 14 BYTEs    ???
  5475.  
  5476. Format of record7:
  5477. Offset    Size    Description    (Table 2972)
  5478.  00h    WORD    ???
  5479.  02h    WORD    ???
  5480.  04h    WORD    ???
  5481.  06h 40 BYTEs    ???
  5482.  
  5483. Format of record8:
  5484. Offset    Size    Description    (Table 2973)
  5485.  00h  4 BYTEs    ???
  5486.  04h    WORD    size of ES:DI buffer
  5487.  06h  6 BYTEs    ???
  5488.  0Ch    WORD    (ret) ???
  5489.  0Eh    WORD    operation??? (01h-03h)
  5490.  10h 12 BYTEs    ???
  5491. --------N-6A0002-----------------------------
  5492. INT 6A U - Super-TCP DOS TSR Kernel v3.57 - ???
  5493.     AX = 0002h
  5494.     BX = ??? (zero/nonzero)
  5495.     CX = ??? identifier (see AX=0004h)
  5496.     DS:SI -> 40-byte buffer for ??? or 0000h:0000h
  5497.     ES:DI -> buffer for ??? or 0000h:0000h
  5498. Return: AX = 0000h (successful) ???
  5499.     BL = ???
  5500.     BH = ???
  5501.     CX = ???
  5502.     DX = ???
  5503. --------N-6A0003-----------------------------
  5504. INT 6A U - Super-TCP DOS TSR Kernel v3.57 - GET ??? DATA AREA
  5505.     AX = 0003h
  5506. Return: CX:DX -> data area (see #2974)
  5507.  
  5508. Format of Super-TCP data area:
  5509. Offset    Size    Description    (Table 2974)
  5510.  00h  2 BYTEs    ???
  5511.  02h    DWORD    original INT 6A vector
  5512.  06h  2 BYTEs    ???
  5513.  08h 96 BYTEs    array of 16 6-byte ???
  5514.  68h    WORD    number of elements of above array in use
  5515.  6Ah    WORD    ???
  5516.     ???
  5517. --------N-6A0004-----------------------------
  5518. INT 6A U - Super-TCP DOS TSR Kernel v3.57 - ALLOCATE ???
  5519.     AX = 0004h
  5520.     CX = size in ???
  5521. Return: AX = 0000h (successful)
  5522.     CX = DX = ???
  5523. SeeAlso: AX=0005h,AX=000Fh
  5524. --------N-6A0005-----------------------------
  5525. INT 6A U - Super-TCP DOS TSR Kernel v3.57 - FREE/CLOSE ???
  5526.     AX = 0005h
  5527.     CX = ??? identifier (from AX=0004h)
  5528. Return: AX = status (0000h successful, FFFFh failed)
  5529. SeeAlso: AX=0004h,AX=000Fh
  5530. --------N-6A000F-----------------------------
  5531. INT 6A U - Super-TCP DOS TSR Kernel v3.57 - FREE/CLOSE ALL ???
  5532.     AX = 000Fh
  5533. Return: AX = 0000h (successful)
  5534. SeeAlso: AX=0000h,AX=0004h,AX=0005h
  5535. --------N-6A0010-----------------------------
  5536. INT 6A U - Super-TCP DOS TSR Kernel v3.57 - UNINSTALL
  5537.     AX = 0010h
  5538. Return: AX = status
  5539.         0000h successful
  5540.         0002h can't uninstall, interrupt vector hooked by another program
  5541. Program: Super-TCP is a TCP/IP protocol stack by Frontier Technologies Corp.
  5542. Note:    if AX is not one of the values listed here on entry, Super-TCP
  5543.       returns AX=FFFEh
  5544. SeeAlso: AX=0000h
  5545. --------N-6A01--DHFF-------------------------
  5546. INT 6A - DECnet DOS LOCAL AREA TRANSPORT - SEND BYTE
  5547.     AH = 01h
  5548.     DH = FFh
  5549.     AL = character
  5550.     DL = handle
  5551. Return: AH >= 80h on error
  5552. SeeAlso: AH=02h
  5553. --------N-6A02--DHFF-------------------------
  5554. INT 6A - DECnet DOS LOCAL AREA TRANSPORT - READ BYTE
  5555.     AH = 02h
  5556.     DH = FFh
  5557.     DL = handle
  5558. Return: AH < 80h if successful
  5559.         AL = character
  5560.     AH >= 80h on error
  5561. SeeAlso: AH=01h
  5562. --------N-6A03--DHFF-------------------------
  5563. INT 6A - DECnet DOS LOCAL AREA TRANSPORT - STATUS
  5564.     AH = 03h
  5565.     DH = FFh
  5566.     DL = handle
  5567. Return: AH = status flags (see #2975)
  5568.  
  5569. Bitfields for DECnet DOS LAT status flags:
  5570. Bit(s)    Description    (Table 2975)
  5571.  5    transmit buffer empty
  5572.  3    session in start state
  5573.  2    session not active
  5574.  1    unable to queue transmit data
  5575.  0    receive data available
  5576. --------N-6AD0--DHFF-------------------------
  5577. INT 6A - DECnet DOS LOCAL AREA TRANSPORT - OPEN SESSION
  5578.     AH = D0h
  5579.     DH = FFh
  5580.     AL = password flag
  5581.         FFh no password
  5582.         0Fh password at ES:DI
  5583.     ES:BX -> LAT session control block (see #2976)
  5584.     ES:DI -> 16-byte blank-padded password (optional)
  5585. Return: AH = 00h success
  5586.         DL = handle
  5587. SeeAlso: AX=D000h
  5588.  
  5589. Format of LAT Session Control Block:
  5590. Offset    Size    Description    (Table 2976)
  5591.  00h 18 BYTEs    service name
  5592.  12h 18 BYTEs    node name (future use)
  5593.  24h 18 BYTEs    port name (future use)
  5594.  36h    DWORD    -> session stopped post routine
  5595.  3Ah    DWORD    -> service table overflow post routine
  5596.  3Eh    DWORD    -> transmit post routine
  5597.  42h    DWORD    -> receive post routine
  5598.  46h    WORD    session status
  5599.         04h circuit failure
  5600.         08h stop slot received
  5601. ---LAT v???---
  5602.  48h    WORD    slot state (LAT driver use)
  5603.  4Ah    WORD    local credits (LAT driver use)
  5604.  4Ch    DWORD    -> VCB (LAT driver use)
  5605.  50h    WORD    backward slot (LAT driver use)
  5606.  52h    WORD    forward slot (LAT driver use)
  5607.  54h    WORD    remote slot ID (LAT driver use)
  5608.  56h    WORD    local slot ID (LAT driver use)
  5609.  58h    WORD    slot byte count (LAT driver use)
  5610.  5Ah    BYTE    remote credits (LAT driver use)
  5611.  5Bh 255 BYTEs    transmitted data slot
  5612. 15Ah    BYTE    number of receive data slots (4 recommended)
  5613. 15Bh    BYTE    number of occupied slots
  5614. 15Ch    BYTE    index of next receive slot to use
  5615. 15Dh    BYTE    index of current receive slot
  5616. 15Eh    WORD    pointer to first received character
  5617. 160h  N WORDs    pointers to receive slots (buffers); each is 259 bytes
  5618.      259N BYTEs    buffers
  5619. Note:    set post routines to 0000h:0000h if polled operation will be used
  5620. ---LAT v4.1.17---
  5621.  48h    WORD    session state (LAT driver use)
  5622.  4Ah    BYTE    local credits (LAT driver use)
  5623.  4Bh    DWORD    -> VCB (LAT driver use)
  5624.  4Fh    WORD    backward slot (LAT driver use)
  5625.  51h    WORD    forward slot (LAT driver use)
  5626.  53h    BYTE    remote slot ID (LAT driver use)
  5627.  54h    BYTE    local slot ID (LAT driver use)
  5628.  55h    BYTE    slot byte count (LAT driver use)
  5629.  56h    BYTE    remote credits (LAT driver use)
  5630.  57h 255 BYTEs    transmitted data slot
  5631. 156h    BYTE    number of receive data slots (4 recommended)
  5632. 157h    BYTE    number of occupied slots
  5633. 158h    BYTE    index of next receive slot to use
  5634. 159h    BYTE    index of current receive slot
  5635. 15Ah    WORD    pointer to first received character
  5636. 15Ch  N WORDs    pointers to receive slots (buffers); each is 259 bytes
  5637.      259N BYTEs    buffers
  5638. Note:    set post routines to 0000h:0000h if polled operation will be used
  5639. --------N-6AD000DHFF-------------------------
  5640. INT 6A - DECnet DOS LOCAL AREA TRANSPORT - CLOSE SESSION
  5641.     AX = D000h
  5642.     DH = FFh
  5643.     DL = handle
  5644. Return: AX = status (see #2977)
  5645. SeeAlso: AH=D0h
  5646.  
  5647. (Table 2977)
  5648. Values for DECnet DOS LAT function status:
  5649.  0000h    successful
  5650.  0001h    no such session
  5651.  0002h    session not running, try again later
  5652. --------N-6AD100DHFF-------------------------
  5653. INT 6A - DECnet DOS LOCAL AREA TRANSPORT - SEND BREAK
  5654.     AX = D100h
  5655.     DH = FFh
  5656.     DL = handle
  5657. Return: AX = 0000h if successful
  5658.     AH bit 7 set if unable to send break
  5659. --------N-6AD300DHFF-------------------------
  5660. INT 6A - DECnet DOS LOCAL AREA TRANSPORT - RESET LAT COUNTERS
  5661.     AX = D300h
  5662.     DH = FFh
  5663. SeeAlso: AX=D400h
  5664. --------N-6AD400DHFF-------------------------
  5665. INT 6A - DECnet DOS LOCAL AREA TRANSPORT - COPY LAT COUNTERS
  5666.     AX = D400h
  5667.     DH = FFh
  5668.     CX = buffer size
  5669.     ES:BX -> buffer for LAT counters
  5670. Return: AX = status
  5671.         0000h counters copied into buffer
  5672.         FFFFh buffer too small
  5673. SeeAlso: AX=D300h
  5674. --------N-6AD500DHFF-------------------------
  5675. INT 6A - DECnet DOS LOCAL AREA TRANSPORT - GET NEXT LAT SERVICE NAME
  5676.     AX = D500h
  5677.     DH = FFh
  5678.     ES:BX -> 17-byte buffer for name
  5679. Return: AH = 00h if successful
  5680.        ES:BX buffer filled
  5681.     AX = FFFFh if end of table or no name available
  5682. Notes:    use this function to get the names of the hosts on the network
  5683.     successive calls are necessary to get all names
  5684. SeeAlso: AX=D600h/DH=FFh
  5685. --------N-6AD600DHFF-------------------------
  5686. INT 6A - DECnet DOS LOCAL AREA TRANSPORT - LAT SERVICE TABLE RESET
  5687.     AX = D600h
  5688.     DH = FFh
  5689. Return: AX = number of service table entries
  5690.     BX = status
  5691.         0000h service table has not overflowed
  5692.         FFFFh service table has overflowed
  5693. SeeAlso: AX=D500h
  5694. --------N-6B---------------------------------
  5695. INT 6B - DECnet DOS - PORT DRIVER
  5696. Note:    the installation check consists of testing for a signature area
  5697.       (see #2978) immediately preceding the interrupt handler
  5698. SeeAlso: INT 6A"DECnet",INT 6C"DECnet"
  5699. Index:    installation check;DECnet DOS Port Driver
  5700.  
  5701. Format of DECnet DOS signature area:
  5702. Offset    Size    Description    (Table 2978)
  5703.  -5    BYTE    major version number
  5704.  -4    BYTE    minor version number
  5705.  -3   3 BYTEs    signature (ASCII "PDV")
  5706. --------v-6B---------------------------------
  5707. INT 6B - VIRUS - "Saddam" - ORIGINAL INT 21h VECTOR
  5708. SeeAlso: INT 21/AX=FFFFh,INT 61"VIRUS",INT 70"VIRUS"
  5709. --------h-6B---------------------------------
  5710. INT 6B C - HP Vectra AT - IRQ19 - RESERVED HARDWARE INTERRUPT
  5711. SeeAlso: INT 0B"IRQ3",INT 6A"HP Vectra",INT 6C"HP Vectra"
  5712. --------S-6B0000-----------------------------
  5713. INT 6B - Novell NASI/NACS, Ungermann-Bass Net One SERIAL I/O - BUFFERED WRITE
  5714.     AX = 0000h
  5715.     CX = length
  5716.     ES:BX -> buffer
  5717. Return: CX = number of bytes written
  5718. Program: NASI is Novell's NetWare Asynchronous Services Interface (purchased
  5719.       from Network Products Corp, who call it NCSI) which runs on
  5720.       workstations; NACS is the NetWare Asynchronous Communications
  5721.       Services module which runs on servers
  5722. Notes:    the installation check consists of testing for the signature string
  5723.       "NCSI" three bytes past the interrupt handler; see also AH=02h.
  5724.       As of version 3.0, Novell's NASI can be distinguished from NPC's
  5725.       NCSI by the presence of an 'A' immediately following the signature
  5726.     this function is also supported by TelAPI, NPC NCSI, and Connection
  5727.       Manager CLIENT.EXE; for TelAPI, nonzero values in AL specify a
  5728.       connection ID
  5729.     Connection Manager returns CF set/AL=FFh if called while an INT 6B
  5730.       call is already in progress
  5731. SeeAlso: AX=0100h,AH=18h,INT 14/AH=19h,INT 14/AH=E3h
  5732. --------S-6B0100-----------------------------
  5733. INT 6B - Novell NASI/NACS, Ungermann-Bass Net One SERIAL I/O - BUFFERED READ
  5734.     AX = 0100h
  5735.     CX = length of buffer
  5736.     ES:BX -> buffer
  5737. Return: CX = number of bytes read
  5738. Note:    also supported by TelAPI and NPC NCSI; for TelAPI, nonzero values in
  5739.       AL specify a connection ID
  5740. SeeAlso: AX=0000h,AH=19h,INT 14/AH=18h,INT 14/AH=E2h,INT 14/AX=FF02h
  5741. --------S-6B02-------------------------------
  5742. INT 6B - Novell NASI/NACS, Ungermann-Bass Net One SERIAL I/O - INSTALL CHECK
  5743.     AH = 02h
  5744.     AL nonzero
  5745. Return: AL = 00h if present and OK
  5746. Note:    this function is also supported by TelAPI and NPC NCSI
  5747. SeeAlso: AX=0700h
  5748. --------S-6B0600-----------------------------
  5749. INT 6B - Novell NASI/NACS, Ungermann-Bass Net One SERIAL I/O - CONTROL
  5750.     AX = 0600h
  5751.     CX = command
  5752.         02h send break
  5753.         04h disconnect
  5754.         06h hold
  5755. Return: CF clear if successful
  5756.         AL = 00h
  5757.     CF set on error
  5758.         AX < 0
  5759. Note:    this function is also supported by TelAPI and NPC NCSI
  5760. --------S-6B0700-----------------------------
  5761. INT 6B - Novell NASI/NACS, Ungermann-Bass Net One SERIAL I/O - GET STATUS
  5762.     AX = 0700h
  5763. Return: CH <> 00h if connection active
  5764. Notes:    this function is also supported by TelAPI and NPC NCSI
  5765.     Novell TelAPI returns CX=FF01h and CF clear
  5766. SeeAlso: AH=02h,AH=10h
  5767. --------N-6B08-------------------------------
  5768. INT 6B - TelAPI - CHECK FOR BREAK SIGNAL
  5769.     AH = 08h
  5770.     AL = circuit number
  5771. Return: CF clear if no breaks
  5772.         AL = 00h
  5773.         CX = 0000h
  5774.     CF set if one or more breaks received
  5775. Note:    this function also clears ??? flag
  5776. SeeAlso: INT 14/AX=FF00h
  5777. --------S-6B10-------------------------------
  5778. INT 6B - NPC NCSI EXTENDED SERIAL I/O - GET STATUS
  5779.     AH = 10h
  5780.     AL = connection ID (Novell TELAPI.EXE)
  5781.     CX = ???
  5782.     ES:BX -> buffer for status (see #2979)
  5783. Return: CF clear if successful
  5784.         CL = ???
  5785.         CH = ???
  5786.     CF set on error
  5787.     ???
  5788. Notes:    this function is also supported by TelAPI
  5789.     when shelled out to an external protocol from Novell NASI, the circuit
  5790.       whose status indicates that it is connected is the currently active
  5791.       circuit
  5792. SeeAlso: AX=0700h,AH=12h,AH=1Fh
  5793.  
  5794. Format of NASI status:
  5795. Offset    Size    Description    (Table 2979)
  5796.  00h    BYTE    number of allocated virtual circuits
  5797.  01h    BYTE    reserved
  5798.  02h  9 BYTEs    states of emulated circuits 0-8
  5799.         00h idle
  5800.         01h attached Telnet session, in command state
  5801.         02h attached Telnet session, connected with host
  5802.         03h-06h ??? (not returned by TelAPI)
  5803. Note:    this description is derived from the Novell TelAPI emulation of NASI
  5804. --------S-6B11--DX0001-----------------------
  5805. INT 6B - NPC NCSI EXTENDED SERIAL I/O - ALLOCATE A VIRTUAL CIRCUIT
  5806.     AH = 11h
  5807.     DX = 0001h
  5808.     AL = 00h
  5809.     ES:BX -> service name string (8 characters, blank-padded)
  5810. Return: CF clear if successful
  5811.         AL = virtual circuit number allocated (01h for Novell TELAPI.EXE)
  5812.         CL = ??? (01h for Novell TELAPI.EXE)
  5813.         CH = ??? (01h for Novell TELAPI.EXE)
  5814.     CF set on error
  5815.         ???
  5816. Note:    this function is also supported by TelAPI
  5817. SeeAlso: AH=12h,AH=15h,AH=16h,AH=17h,AH=18h
  5818. --------S-6B12-------------------------------
  5819. INT 6B - NPC NCSI EXTENDED SERIAL I/O - VIRTUAL CIRCUIT STATUS
  5820.     AH = 12h
  5821.     AL = virtual circuit number (0-8)
  5822. Return: CF clear if successful
  5823.         AL = virtual circuit number
  5824.         CL = virtual circuit's state
  5825.         00h idle
  5826.         01h Telnet session, in command state
  5827.         02h Telnet session, connected to host
  5828.         03h-06h ??? (not returned by TelAPI)
  5829.     CF set on error
  5830.         AL = error code
  5831.         E2h invalid virtual circuit number
  5832.         E4h specified virtual circuit not allocated
  5833. Note:    this function is also supported by TelAPI
  5834. SeeAlso: AH=10h,AH=15h,AH=1Ah,AH=1Bh,AH=1Fh
  5835. --------S-6B13-------------------------------
  5836. INT 6B - NPC NCSI EXTENDED SERIAL I/O - SET/RETRIEVE REQUEST/REPLY SERVICE NAME
  5837.     AH = 13h
  5838.     AL = virtual circuit number
  5839.     CL = direction (00h get, nonzero set)
  5840.     ES:BX -> buffer for/containing service name
  5841. Return: ???
  5842. Note:    this function is also supported by TelAPI
  5843. SeeAlso: AH=14h,AH=15h
  5844. --------S-6B14-------------------------------
  5845. INT 6B - NPC NCSI EXTENDED SERIAL I/O - SET/RETRIEVE SERVICE ADDRESS
  5846.     AH = 14h
  5847.     AL = virtual circuit number
  5848.     ES:BX -> buffer for/containing service address
  5849. Return: ???
  5850. Note:    this function is also supported by TelAPI, which only supports
  5851.       retrieving the address
  5852. SeeAlso: AH=13h,AH=15h,AH=21h
  5853. --------S-6B15-------------------------------
  5854. INT 6B - NPC NCSI EXTENDED SERIAL I/O - SET/RETRIEVE VIRTUAL CIRCUIT CONFIG
  5855.     AH = 15h
  5856.     AL = virtual circuit number
  5857.     CL = direction (00h get, nonzero set)
  5858.     ES:BX -> buffer for/containing virtual circuit config (see #2980)
  5859. Return: ES:BX buffer filled
  5860. Note:    this function is also supported by TelAPI
  5861. SeeAlso: AH=13h"NCSI",AH=14h"NCSI"
  5862.  
  5863. Format of virtual circuit configuration:
  5864. Offset    Size    Description    (Table 2980)
  5865.  00h    WORD    buffer length
  5866.  02h    WORD    port ID
  5867.  04h    WORD    receive rate
  5868.  06h    WORD    receive word length
  5869.  08h    WORD    receive stop bits
  5870.  0Ah    WORD    receive parity
  5871.  0Ch    WORD    transmit rate
  5872.  0Eh    WORD    transmit word length
  5873.  10h    WORD    transmit stop bits
  5874.  12h    WORD    transmit parity
  5875.  14h    WORD    DTR
  5876.  16h    WORD    RTS
  5877. --------S-6B16-------------------------------
  5878. INT 6B - NPC NCSI EXTENDED SERIAL I/O - LOG AND/OR INITIALIZE VIRTUAL CIRCUIT
  5879.     AH = 16h
  5880.     AL = virtual circuit number
  5881.     CL = ??? switch (00h, ???)
  5882. Return: CF clear if successful
  5883.         AL = virtual circuit number
  5884.     CF set on error
  5885.         ???
  5886. Note:    this function is also supported by TelAPI, which always returns CF
  5887.       clear and AL=00h
  5888. SeeAlso: AH=11h,AH=12h,AH=17h
  5889. --------S-6B17-------------------------------
  5890. INT 6B - NPC NCSI EXTENDED SERIAL I/O - DISCONNECT A VIRTUAL CIRCUIT
  5891.     AH = 17h
  5892.     AL = virtual circuit number
  5893. Return: CF clear if successful
  5894.     CF set on error
  5895.     ???
  5896. Note:    this function is also supported by TelAPI, which always returns CF
  5897.       clear and AL=00h
  5898. SeeAlso: AH=11h,AH=16h
  5899. --------S-6B18-------------------------------
  5900. INT 6B - NPC NCSI EXTENDED SERIAL I/O - WRITE DATA ON A VIRTUAL CIRCUIT
  5901.     AH = 18h
  5902.     AL = virtual circuit number
  5903.     CX = number of characters to send
  5904.     ES:BX -> buffer containing characters to be sent
  5905. Return: CF clear if successful
  5906.     CF set on error
  5907.     ???
  5908. Note:    this function is also supported by TelAPI, which always returns CF
  5909.       clear and AL=30h
  5910. SeeAlso: AX=0000h,AH=12h,AH=19h
  5911. --------S-6B19-------------------------------
  5912. INT 6B - NPC NCSI EXTENDED SERIAL I/O - READ DATA ON A VIRTUAL CIRCUIT
  5913.     AH = 19h
  5914.     AL = virtual circuit number
  5915.     CX = number of characters to read
  5916.     ES:BX -> buffer for received characters
  5917. Return: CX = 0000h if failed
  5918.     CX = nonzero (possibly number of characters received) if successful
  5919. Note:    this function is also supported by TelAPI
  5920. SeeAlso: AX=0100h,AH=12h,AH=18h
  5921. --------S-6B1A-------------------------------
  5922. INT 6B - NPC NCSI EXTENDED SERIAL I/O - RECEIVE STATUS
  5923.     AH = 1Ah
  5924.     ???
  5925. Return: ???
  5926. SeeAlso: AH=12h,AH=1Bh
  5927. --------S-6B1B-------------------------------
  5928. INT 6B - NPC NCSI EXTENDED SERIAL I/O - TRANSMIT STATUS
  5929.     AH = 1Bh
  5930.     ???
  5931. Return: ???
  5932. SeeAlso: AH=12h,AH=1Ah
  5933. --------S-6B1C-------------------------------
  5934. INT 6B - NPC NCSI EXTENDED SERIAL I/O - CLEAR RECEIVE BUFFER
  5935.     AH = 1Ch
  5936.     AL = circuit number
  5937. Return: nothing
  5938. SeeAlso: AH=1Dh"NCSI",AH=1Eh"NCSI"
  5939. --------S-6B1D-------------------------------
  5940. INT 6B - NPC NCSI EXTENDED SERIAL I/O - TRANSMIT BUFFER CONTROL
  5941.     AH = 1Dh
  5942.     ???
  5943. Return: ???
  5944. SeeAlso: AH=1Ch,AH=1Eh
  5945. --------S-6B1E-------------------------------
  5946. INT 6B - NPC NCSI EXTENDED SERIAL I/O - ISSUE CONTROL REQUEST
  5947.     AH = 1Eh
  5948.     ???
  5949. Return: ???
  5950. SeeAlso: AH=1Ch,AH=1Dh
  5951. --------S-6B1F-------------------------------
  5952. INT 6B - NPC NCSI EXTENDED SERIAL I/O - EXTERNAL STATUS
  5953.     AH = 1Fh
  5954.     ???
  5955. Return: ???
  5956. SeeAlso: AH=10h,AH=12h
  5957. --------S-6B20-------------------------------
  5958. INT 6B - Connection Manager CLIENT.EXE - ???
  5959.     AH = 20h
  5960.     ???
  5961. Return: ???
  5962. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  5963.       serial ports over an IPX or NetBIOS-based network
  5964. Note:    CLIENT.EXE returns CF set/AL=F9h if AH is not 00h to 21h on entry
  5965. --------S-6B21-------------------------------
  5966. INT 6B - NPC NCSI EXTENDED SERIAL I/O - QUERY NAME SERVICE
  5967.     AH = 21h
  5968.     AL = virtual circuit number
  5969.     CL = ??? (00h or 01h)
  5970.     ES:BX -> buffer for service name structure (see #2981)
  5971. Return: CF clear if successful
  5972.         ES:BX buffer filled
  5973.     CF set on error
  5974. Notes:    a program should call this function after allocating a virtual circuit
  5975.       and check that the general name matches the requested service
  5976.     prior to version 3.0, Novell's NASI returned the first available port;
  5977.       v3.0+ returns the first port found--check the returned status to
  5978.       determine whether the port is available
  5979. SeeAlso: AH=14h"NCSI"
  5980.  
  5981. Format of NCSI service name structure:
  5982. Offset    Size    Description    (Table 2981)
  5983.  00h    WORD    buffer length
  5984.  02h  8 BYTEs    service name
  5985.  0Ah  8 BYTEs    general name
  5986.  12h  8 BYTEs    specific name
  5987.  1Ah  4 BYTEs    ???
  5988. ---Novell NASI v3.0+ ---
  5989.  1Eh    BYTE    port number
  5990.  1Fh    BYTE    port status
  5991.         00h idle (available)
  5992.         01h allocated (available)
  5993.         02h connected
  5994.         03h on hold
  5995. ----------6B6B-------------------------------
  5996. INT 6B - Tandy SCHOOLMATE PLUS - API
  5997.     AH = 6Bh
  5998.     AL = E0h to FFh
  5999. Note:    details not yet available
  6000. ----------6C---------------------------------
  6001. INT 6C - system resume vector (CONVERTIBLE)
  6002. ----------6C---------------------------------
  6003. INT 6C - DOS 3.2 Realtime Clock update
  6004. --------N-6C---------------------------------
  6005. INT 6C - DECnet DOS network scheduler
  6006. Notes:    the installation check consists of testing for a signature area
  6007.       immediately preceding the interrupt handler (see #2982)
  6008.     also supported by DEC Pathworks for DOS
  6009. SeeAlso: INT 6B"DECnet",INT 6D"DECnet",INT 6E"DECnet"
  6010. Index:    installation check;DECnet DOS scheduler
  6011.  
  6012. Format of DECnet DOS signature area:
  6013. Offset    Size    Description    (Table 2982)
  6014.  -5    BYTE    major version number
  6015.  -4    BYTE    minor version number
  6016.  -3   3 BYTEs    signature (ASCII "SCH")
  6017. --------h-6C---------------------------------
  6018. INT 6C C - HP Vectra AT - IRQ20 - HP-HIL CONTROLLER INTERRUPT
  6019. SeeAlso: INT 0C"IRQ4",INT 6B"HP Vectra",INT 6D"HP Vectra"
  6020. --------V-6D---------------------------------
  6021. INT 6D - VIDEO - many VGA - VIDEO BIOS ENTRY POINT
  6022. Desc:    points at the original INT 10 entry point set up by the VGA BIOS
  6023. Notes:    used by IBM, ATI VGA Wonder, Paradise, Video7, and NCR, and many others
  6024.     the Diamond Stealth64 BIOS uses this vector to store the INT 42 vector
  6025.        of the inactive video (see INT 10/AH=12h/BL=35h)
  6026. SeeAlso: INT 10/AH=00h,INT 10/AH=0Eh,INT 10/AH=12h/BL=10h
  6027. --------V-6D---------------------------------
  6028. INT 6D - Trident SVGA - VIDEO BIOS HANDLER
  6029. Note:    the BIOS INT 10 handler on various Trident VGA cards consists merely
  6030.       of a call to INT 6D followed by an IRET.
  6031. --------N-6D---------------------------------
  6032. INT 6D - DECnet DOS (before 2.1) - DATA LINK LAYER PROGRAM
  6033.     AH = function
  6034.     ???
  6035. Return: ???
  6036. Note:    the installation check consists of testing for a signature area
  6037.       immediately preceding the interrupt handler (see #2983)
  6038. SeeAlso: INT 69/AH=0Ah,INT 6C"DECnet",INT 6E"DECnet"
  6039. Index:    installation check;DECnet DOS Data Link Layer
  6040.  
  6041. Format of DECnet DOS signature area:
  6042. Offset    Size    Description    (Table 2983)
  6043.  -5    BYTE    major version number
  6044.  -4    BYTE    minor version number
  6045.  -3   3 BYTEs    signature (ASCII "DLL")
  6046. --------h-6D---------------------------------
  6047. INT 6D C - HP Vectra AT - IRQ21 - RESERVED HARDWARE INTERRUPT
  6048. SeeAlso: INT 0D"IRQ5",INT 6C"HP Vectra",INT 6E"HP Vectra"
  6049. --------V-6DBD60-----------------------------
  6050. INT 6D U - Matrox Multiple Monitor Support v1.0 - ???
  6051.     AX = BD60h
  6052.     DS:SI -> buffer containing ??? (see #2984)
  6053.     ???
  6054. Return: AX = 00BDh if function executed
  6055.        ???:SI -> 22-byte buffer (inside TSR) filled with ??? (see #2984)
  6056.     AX unchanged if function disabled
  6057. Note:    this function is a NOP if AX=BD6Fh/BL=01h was called
  6058. SeeAlso: AX=BD61h,AX=BD6Fh,AX=BDFFh
  6059.  
  6060. Format of Matrox ??? buffer:
  6061. Offset    Size    Description    (Table 2984)
  6062.  00h  4 BYTEs    ???
  6063.  04h    WORD    video mode width in pixels
  6064.  06h    WORD    video mode height in pixels
  6065.  08h    BYTE    ???
  6066.  09h    BYTE    ???
  6067.  0Ah    BYTE    ???
  6068.  0Bh    BYTE    flags
  6069.         bit 1: ???
  6070.         bit 4: ??? (corresponds to bit 14 for AX=BD61h)
  6071.         bit 5: ??? (corresponds to bit 15 for AX=BD61h)
  6072.  0Ch    DWORD    -> ??? buffer
  6073.  10h    WORD    ???
  6074.         bit 4: ??? (corresponds to bit 14 for AX=BD61h)
  6075.         bit 5: ??? (corresponds to bit 15 for AX=BD61h)
  6076.  12h  4 BYTEs    ???
  6077. SeeAlso: #2985
  6078. --------V-6DBD61-----------------------------
  6079. INT 6D U - Matrox Multiple Monitor Support v1.0 - GET VIDEO MODE INFORMATION
  6080.     AX = BD61h
  6081.     BX = width in pixels (bits 13-0)
  6082.         bit 14: ???
  6083.         bit 15: ???
  6084.     CX = height in pixels
  6085. Return: AL = BDh if function supported
  6086.         AH = status
  6087.         00h successful
  6088.         01h failed (resolution/flags not supported)
  6089.         CX:BX -> video mode data structure (see #2985)
  6090.           (first word is FFFFh if unsupported resolution)
  6091.         EAX high word cleared
  6092. SeeAlso: AX=BD60h,AX=BD6Fh,AX=BDFFh
  6093.  
  6094. Format of Matrox video mode information (VCE structure):
  6095. Offset    Size    Description    (Table 2985)
  6096.  00h    WORD    width in pixels
  6097.  02h    WORD    height in pixels
  6098.  04h    WORD    ???
  6099.  06h    DWORD    dot clock frequency
  6100.  0Ah 25 BYTEs    ???
  6101. SeeAlso: #2984
  6102. --------V-6DBD6F-----------------------------
  6103. INT 6D U - Matrox Multiple Monitor Support v1.0 - INSTALLATION CHECK
  6104.     AX = BD6Fh
  6105.     BL = subfunction
  6106.         00h installation check
  6107.         01h disable TSR
  6108.         02h enable TSR (see AX=BD60h)
  6109. Return: AX = 00BDh if installed
  6110. SeeAlso: AX=BD60h,AX=BD61h,AX=BDFFh
  6111. --------V-6DBDFF-----------------------------
  6112. INT 6D U - Matrox Multiple Monitor Support v1.0 - UNHOOK INTERRUPT (UNINSTALL)
  6113.     AX = BDFFh
  6114. Return: AX = 00BDh if supported
  6115. Note:    this function revectors INT 6D without checking that it points at the
  6116.       TSR, and does not release the memory occupied by the TSR
  6117. SeeAlso: AX=BD60h,AX=BD61h,AX=BD6Fh
  6118. --------N-6E---------------------------------
  6119. INT 6E - DECnet DOS - DECnet NETWORK PROCESS API
  6120. Notes:    this is the main DECnet DOS access, and is described in Digital manual
  6121.       AA-EB46B-TV ("DECnet-DOS Programmer's Reference Manual")
  6122.     there is a signature/data area immediately prior to the interrupt
  6123.       handler which may be used as an installation check (see #2986)
  6124. Index:    installation check;DECnet DOS
  6125.  
  6126. Format of DECnet DOS signature area:
  6127. Offset    Size    Description    (Table 2986)
  6128.  -5    BYTE    major version number
  6129.  -4    BYTE    minor version number
  6130.  -3   3 BYTEs    signature (ASCII "DNP")
  6131. --------h-6E---------------------------------
  6132. INT 6E C - HP Vectra AT - IRQ22 - RESERVED HARDWARE INTERRUPT
  6133. SeeAlso: INT 0E"IRQ6",INT 6D"HP Vectra",INT 6F/AH=00h"HP Vectra"
  6134. --------N-6F---------------------------------
  6135. INT 6F - Novell NetWare - PCOX API (3270 PC terminal interface)
  6136.     AX = function
  6137.         0000h enter terminal mode
  6138.         Return: AX = status
  6139.                 0000h no action requested
  6140.                 0001h screen save
  6141.         0001h reset interface and set configuration parameters
  6142.         DX = bitfields
  6143.             bits 2-0: model number
  6144.             bits 4-3: I/O address
  6145.             bits 6-5: DMA channel
  6146.         Return: nothing
  6147.         0002h set display parameters
  6148.         DX = bitfields
  6149.             bits 1-0: OIA mode
  6150.             bits 4-2: monitor support
  6151.         Return: nothing
  6152.         0003h read status
  6153.         Return: AX = status word (see #2987)
  6154.         0004h read cursor position
  6155.         Return: AX = cursor position
  6156.         0005h get character from device buffer
  6157.         DX = cursor position
  6158.         Return: AH = type (00h data, 01h attribute)
  6159.             AL = data or attribute character
  6160.         0006h send character
  6161.         DH = type (00h ASCII, 01h extended code)
  6162.         DL = ASCII character or extended code
  6163.         Return: nothing
  6164.         0007h set timeout
  6165.         DX = timeout in seconds
  6166.         Return: nothing
  6167.         0008h wait for location to be modified
  6168.         DX = cursor position
  6169.         Return: AX = status (0000h modified, nonzero timeout)
  6170.         0009h NOP
  6171.         000Ah restore display
  6172.         Return: nothing
  6173.         000Bh update device buffer
  6174.         Return: AX = cursor positoin
  6175.         000Ch write string to add information area
  6176.         DS:DX -> string
  6177.         Return: nothing
  6178.         000Dh maintenance operations
  6179.         DX = maintenance operation code
  6180.         Return: AX = operation status
  6181.         000Eh get control program version
  6182.         Return: AH = release number (major version)
  6183.             AL = level number (minor version)
  6184.         000Fh get microcode version
  6185.         Return: AH = release number (major version)
  6186.             AL = level number (minor version)
  6187.         0010h save or display graphics
  6188.         BX = length of data buffer
  6189.         CX = subfunction request code
  6190.         DS:DX -> data buffer
  6191.         Return: AX = return code
  6192.             CX = length of PIF data
  6193.         0011h perform structured field operation
  6194.         CX = request number
  6195.         DS:DX -> parameter list
  6196.         Return: AX = status word (see #2987)
  6197.             CX = error number
  6198.         0012h set cursor position for direct write buffer
  6199.         DX = new cursor position
  6200.         Return: AX = status word (see #2987)
  6201.         0013h write direct to buffer
  6202.         DL = character to be written
  6203.         DH = translation option
  6204.         Return: AX = status word (see #2987)
  6205.         0014h write direct to buffer without echo
  6206.         DL = character to be written
  6207.         DH = translation option
  6208.         Return: AX = status word (see #2987)
  6209.         0015h set direct write string length
  6210.         DX = string value
  6211.         Return: nothing
  6212.         0016h write string direct to buffer
  6213.         DS:DX -> string
  6214.         Return: AX = status word (see #2987)
  6215.         0017h write string direct to buffer, untranslated
  6216.         DS:DX -> string
  6217.         Return: AX = status word (see #2987)
  6218.         0018h get direct-write cursor position
  6219.         Return: AX = cursor position
  6220.         0019h convert row/column to cursor position
  6221.         DH = display row (1-43)
  6222.         DL = display column (1-132)
  6223.         Return: AX = cursor position
  6224.         001Ah convert cursor position to row/column
  6225.         DX = cursor position
  6226.         Return: AH = display row
  6227.             AL = display column
  6228.         001Bh find next field
  6229.         DX = initial cursor position
  6230.         Return: AX = field cursor position
  6231.         001Ch find previous field
  6232.         DX = initial cursor position
  6233.         Return: AX = field cursor position
  6234.         001Dh find next unprotected field
  6235.         DX = initial cursor position
  6236.         Return: AX = field cursor position
  6237.         001Eh find previous unprotected field
  6238.         DX = initial cursor position
  6239.         Return: AX = field cursor position
  6240.         001Fh find next protected field
  6241.         DX = initial cursor position
  6242.         Return: AX = field cursor position
  6243.         0020h find previous protected field
  6244.         DX = initial cursor position
  6245.         Return: AX = field cursor position
  6246.         0021h masked search forward
  6247.         DH = mask
  6248.         DL = search pattern
  6249.         Return: AX = cursor position or 0000h
  6250.         0022h masked search backward
  6251.         DH = mask
  6252.         DL = search pattern
  6253.         Return: AX = cursor position or 0FFFh
  6254.         0023h find field length
  6255.         DX = cursor position
  6256.         Return: AX = field length
  6257.         0024h read field
  6258.         DS:DX -> buffer for field contents
  6259.         Return: AX = status word (see #2987)
  6260.         0025h read screen
  6261.         DS:DX -> buffer for screen contents
  6262.         Return: AX = status word (see #2987)
  6263.         0026h read buffer untranslated
  6264.         DX = cursor position
  6265.         Return: AX = buffer code
  6266.             CX:BX -> 3278/79 device buffer image
  6267.         0027h enable/disable keyboard
  6268.         DL = new state of keyboard breaks (00h enabled, 01h disabled)
  6269.         Return: nothing
  6270.         0028h select host session
  6271.         DL = session short name
  6272.         Return: AX = session information
  6273.         0029h retrieve host session name
  6274.         AX = short name (DFT) or 0000h (not available, CUT mode)
  6275.         002Ah get current device buffer size
  6276.         Return: AX = device buffer size
  6277.             CX = segment of EAB
  6278.         002Bh arm modified location trigger
  6279.         DX = cursor position
  6280.         Return: AX = status (0000h not available, 0001h successful)
  6281.  
  6282. Bitfields for PCOX status word:
  6283. Bit(s)    Description    (Table 2987)
  6284.  0,1    cursor type
  6285.  2    cursor inhibited
  6286.  3    display inhibited
  6287.  4    feature step inhibited
  6288.  5    480-character format code
  6289.  6,7    unused
  6290.  8-10    model number (2-5)
  6291.  11    unit has been reset by controller (cleared after status returned)
  6292.  12    buffer has been written into (cleared after status returned)
  6293.  13    alarm has been sounded (cleared after status returned)
  6294.  14-15    monitor type (01 mono, 10 color, 11 hybrid)
  6295. --------N-6F00-------------------------------
  6296. INT 6F - 10NET - LOGIN
  6297.     AH = 00h
  6298.     DS:DX -> login record (see #2988)
  6299. Return: CL = security level
  6300.     AX = status (see #2989)
  6301. SeeAlso: AH=01h,AH=80h,INT 21/AX=4402h"10MEMMGR"
  6302.  
  6303. Format of 10NET login record:
  6304. Offset    Size    Description    (Table 2988)
  6305.  00h  8 BYTEs    user name
  6306.  08h  8 BYTEs    password
  6307.  10h 12 BYTEs    name of SuperStation
  6308.  
  6309. (Table 2989)
  6310. Values for 10NET status:
  6311.  0000h    successful
  6312.  01FFh    "RTO_NERR" transmit interrupt lost (time out on response)
  6313.  02FFh    "NET_NERR" network (hardware) error
  6314.  03FFh    "PAS_NERR" invalid password
  6315.  04FFh    "LRN_NERR" local resource not available
  6316.  05FFh    "SRN_NERR" server resource not available
  6317.  06FFh    "LNM_NERR" already logged in under different name
  6318.  07FFh    "LSF_NERR" login security failure (node)
  6319.  08FFh    "NLI_NERR" not logged in
  6320.  09FFh    "DIVZ_NERR" position calc error
  6321.  0AFFh    "NT1_NERR" receive subfunction not = send subfunction (i.e. read,write)
  6322.  0BFFh    "RFNC_NERR" request function not in range
  6323.  0CFFh    "NSFH_NERR" no more server file handle entries left
  6324.  0DFFh    "NFTAB_NERR" no more shared file table entries left
  6325.  0EFFh    "NUFH_NERR" no more user file handle entries left
  6326.  0FFFh    "CHAT_NERR" chat permit not on
  6327.  10FFh    "NSRV_NERR" not a server on request
  6328.  11FFh    "NOBD_NERR" no transporter board error
  6329.  12FFh    "STO_NERR" time out on send
  6330.  13FFh    "INF_NERR" item not found (spool item not on queue)
  6331.  14FFh    "DACS_NERR" DOS access incompatible
  6332.  15FFh    "RLOCK_NERR" record already locked
  6333.  16FFh    "IVP_NERR" invalid parameter
  6334.  17FFh    "RLTO_NERR" record lock time out error
  6335.  18FFh    "CSPL_NERR" currently spooling to named device
  6336.  19FFh    "DRP_NERR" dropped receive message (throttle)
  6337.  1AFFh    "SOPV_NERR" open sharing violation
  6338.  1BFFh    "NTUF_NERR" no more tuf entries left
  6339.  1CFFh    "NOWN_NERR" not file owner on open
  6340.  1DFFh    "RSEC_NERR" read security not passed
  6341.  1EFFh    "WSEC_NERR" write security not passed
  6342.  1FFFh    "GSEC_NERR" group security not passed
  6343.  20FFh    "SEC1_NERR" security file failure
  6344.  21FFh    "ACT1_NERR" activity file failure
  6345.  22FFh    "SPL1_NERR" spool control file failure
  6346.  23FFh    "NMT_NERR" device not mounted (spooling)
  6347.  24FFh    "RSPL_NERR" spool file has not been terminated
  6348.  25FFh    "DNSH_NERR" device not mounted or is not being shared
  6349.  26FFh    "DUP_NERR" duplicate node ID
  6350.  27FFh    "FNF_NERR" file not found error
  6351.  28FFh    "NMF_NERR" no more files
  6352.  29FFh    "UN_NERR" unknown internal system error
  6353.  2AFFh    "QCP_NERR" print queue is full or corrupted
  6354.  2BFFh    "IFNC_NERR" invalid function
  6355.  2CFFh    "IVH_NERR" invalid handle
  6356.  2DFFh    "TOF_NERR" too many files opened
  6357.  2EFFh    "PNF_NERR" path not found
  6358.  2FFFh    "SACT_NERR" named file is active
  6359. ---10NET v5.0+ ---
  6360.  30FFh    "NAK_NERR" received NAK on send (destination out of buffers)
  6361.  31FFh    "RENT_NERR" reentrancy in driver F_SEND
  6362.  32FFh    "RECV_NERR" driver could not be put in receive mode
  6363.  33FFh    "NRLT_NERR" no more RLTAB entries left
  6364.  34FFh    "DIAL_NERR" function requires an unsupported dialect
  6365.  35FFh    "IVD_NERR" invalid device
  6366.  36FFh    "NALV_NERR" netname access level violated
  6367.  37FFh    "NPIDNF_NERR" network path not found
  6368.  38FFh    "SP_NERR" server is paused
  6369.  39FFh    "TMNM_NERR" too many remote user names
  6370.  3AFFh    "DUPD_NERR" duplicate network device
  6371.  3BFFh    "DIU_NERR" shared device in use, can't delete
  6372.  3CFFh    "NNWD_NERR" network name was deleted
  6373.  3DFFh    "NPFS_NERR" not enough space for print file
  6374.  3EFFh    "NNNF_NERR" network name not found (can't find the call name)
  6375.  3FFFh    "NB_NERR" network busy
  6376.  40FFh    "NDNLE_NERR" network device no longer exists
  6377.  41FFh    "NBCLE_NERR" NetBIOS command limit exceeded
  6378.  42FFh    "FINT24_NERR" Fail on INT 24h
  6379.  43FFh    "PEXP_NERR" password expired
  6380.  44FFh    "NPUP_NERR" new password error
  6381.  45FFh    "MAXS_NERR" maximum allowed disk space exceeded
  6382.  46FFh    "TDOW_NERR" time-of-day/day-of-week error
  6383. SeeAlso: #3016
  6384. Index:    error codes;10Net|10Net;error codes
  6385. --------b-6F00-------------------------------
  6386. INT 6F - HP Vectra EX-BIOS - "F_ISR" (internal) - RESPOND TO LOGICAL ISR
  6387.     AH = 00h
  6388.     BP = ID for driver (see #2990)
  6389.     DH = data type (see #2991)
  6390.     DL = physical device driver's index (driver ID / 6)
  6391.     BX,CX = data
  6392.     ES:0000h -> physical device's Describe Record (see #2998)
  6393.     ---keypress event data---
  6394.         BH = keyboard state (only if bit 5 of DH set) (see #2992)
  6395.         BL = scancode (if bit 4 of DH clear)
  6396.         CX = number of scancodes in list (if bit 4 of DH set)
  6397.         ES:SI -> scancode list (if bit 4 of DH set)
  6398.     ---motion event data---
  6399.         BX = new X position (abs device) or X increment (relative device)
  6400.         CX = new Y position (abs device) or Y increment (relative device)
  6401.     ---button event data
  6402.         BL = button information
  6403.         bits 15-8 reserved
  6404.         bit 7: button state (0 = down, 1 = up)
  6405.         bits 6-0: button number (0-7)
  6406.         BH = reserved
  6407. Return: AH = status (see #2993)
  6408.     BP,DS destroyed
  6409.     ---if device is keyboard translator---
  6410.         BL = translated scancode
  6411.         BH = new keyboard state (if DH bit 5 set) (see #2992)
  6412.         DH = new scancode type (see #2991)
  6413. Notes:    INT 6F corresponds to IRQ23 on the original HP Vectra AT, which is
  6414.       unavailable because of its use as a BIOS extension software interrupt
  6415.     the INT 6F handler consists of an instruction to load DS with the
  6416.       driver's data segment followed by an indexed far jump using BP to
  6417.       select the destination vector; since the interrupt handler is
  6418.       located immediately following the dispatch table, the HP_VECTOR_TABLE
  6419.       may be found by looking at offset 0000h in the INT 6F segment, and
  6420.       its size is equal to the offset of the interrupt handler
  6421.     each entry in the HP_VECTOR table consists of a DWORD for the driver's
  6422.       entry point address and a WORD for the driver's data segment
  6423.     this function is not user-callable, as it is a response to a physical
  6424.       event, and assumes that the caller has already handled the physical
  6425.       interrupt and updated the Describe Record (see #2998) to reflect
  6426.       the event
  6427. SeeAlso: INT 6C"HP Vectra",INT 6F/AX=0200h"HP Vectra"
  6428.  
  6429. (Table 2990)
  6430. Values for HP Vectra EX-BIOS driver ID:
  6431.  0000h    V_SCOPY (null driver, but DS value points at system copyright string)
  6432.  0006h    V_DOLITTLE (null driver)
  6433.  000Ch    V_PNULL (null driver)
  6434.  0012h    V_SYSTEM
  6435.  0018h    reserved
  6436.  001Eh    V_S8259
  6437.  0024h    reserved
  6438.  002Ah    V_SINPUT
  6439.  0030h    reserved
  6440.  0036h    V_QWERTY (keyboard translator)
  6441.  003Ch    V_SOFTKEY (keyboard translator)
  6442.  0042h    V_FUNCTION (keyboard translator)
  6443.  0048h    V_NUMPAD (keyboard translator)
  6444.  004Eh    V_CCP (keyboard translator)
  6445.  0054h    V_SVIDEO
  6446.  005Ah    V_STRACK
  6447.  0060h    V_EVENT_TOUCH
  6448.  0066h    V_EVENT_TABLET
  6449.  006Ch    V_EVENT_POINTER
  6450.  0072h    reserved
  6451.  0078h    reserved
  6452.  007Eh    reserved
  6453.  0084h    reserved
  6454.  008Ah    V_CCPCUR (keyboard translator)
  6455.  0090h    V_RAW (keyboard translator)
  6456.  0096h    V_CCPNUM (keyboard translator)
  6457.  009Ch    V_OFF (keyboard translator)
  6458.  00A2h    V_CCPGID (translator: cursor control pad keys to GID data)
  6459.  00A8h    V_SKEY2FKEY (keyboard translator)
  6460.  00AEh    V_8041
  6461.  00B4h    V_PGID_CCP
  6462.  00BAh    C_LTABLET
  6463.  00C0h    V_LPOINTER (pointing device: mouse, etc.)
  6464.  00C6h    V_LTOUCH (touch screen)
  6465.  00CCh    V_LHPMOUSE
  6466.  00D2h    ???
  6467.  ...
  6468.  0102h    ???
  6469.  0108h    V_LNULL
  6470.  010Eh    reserved
  6471.  0114h    V_HPHIL
  6472.  011Ah-01C2h reserved
  6473.  016Eh    V_SCANDOOR (scancode management chip driver) (ES/QS/RS only)
  6474.  01C8h-0228h available
  6475.  
  6476. (Table 2991)
  6477. Values for HP Vectra EX-BIOS ISR data type:
  6478.  00h    reserved "T_KC_R0"
  6479.  01h    reserved "T_KC_R1"
  6480.  02h    ASCII data
  6481.  03h    reserved "T_KC_R3"
  6482.  04h    HP150 keyboard (ITF) scancode
  6483.  05h    reserved "T_KC_R5"
  6484.  06h    device-definable type
  6485.  07h    HP Vectra keyboard set
  6486.  08h    IBM AT scancode set
  6487.  09h    button data
  6488.  0Ah    IBM PC scancode set
  6489.  0Bh    Softkey keypad (F1-F8)
  6490.  0Ch    function key keypad (F1-F10)
  6491.  0Dh    HP Cursor Control Pad keypad
  6492.  0Eh    Qwerty keypad
  6493.  0Fh    Numeric keypad
  6494.  1xh    bit 4 set: string of CX scancode of type 0xh at ES:SI
  6495.  2xh    bit 5 set: BH contains current keyboard state
  6496.  40h    signed 8-bit relative data
  6497.  41h    signed 16-bit relative data
  6498.  42h    unsigned 8-bit absolute data
  6499.  43h    unsigned 16-bit absolute data
  6500.  45h    specially-formed data (80x25) generated by V_LTOUCH
  6501.  46h    specially-formed data (640x200) generated by V_LTABLET
  6502.  47h    specially-formed data (640x200) generated by V_LPOINTER
  6503.  
  6504. Bitfields for HP Vectra EX-BIOS keyboard state:
  6505. Bit(s)    Description    (Table 2992)
  6506.  0    Alt pressed
  6507.  1    Left Shift pressed
  6508.  2    Right Shift pressed
  6509.  3    Ctrl pressed
  6510.  4    CapsLock active
  6511.  5    NumLock active
  6512.  6    Right unlabeled key pressed (some international keyboards)
  6513.  7    Left unlabeled key pressed (some international keyboards)
  6514. SeeAlso: #0481
  6515.  
  6516. (Table 2993)
  6517. Values for HP Vectra EX-BIOS status:
  6518.  00h    successful
  6519.  02h    unsupported function
  6520.  04h    not serviced
  6521.  06h    done (no further processing should be performed on the ISR event)
  6522.  F2h    device is out of paper
  6523.  F4h    device is offline
  6524.  F6h    no more space for more drivers
  6525.  F8h    driver is busy
  6526.  FAh    bad parameter
  6527.  FEh    operation failed
  6528. Note:    status codes are always even; negative values (>= 80h) indicate errors
  6529.       while positive values indicate exceptional conditions
  6530.  
  6531. Format of HP EX-BIOS driver header data:
  6532. Offset    Size    Description    (Table 2994)
  6533.  00h    WORD    driver attributes (see #2995)
  6534.  02h    WORD    string index of driver's name
  6535.  04h    WORD    driver's default logical device vector (see #2990)
  6536.  06h    WORD    driver's parent class (bitset) (see #2996)
  6537.  08h    WORD    driver's child class (bitset)
  6538.  0Ah    WORD    driver's parent vector
  6539.  0Ch    WORD    driver's child vector
  6540.  0Eh    BYTE    major subaddress
  6541.  0Fh    BYTE    minor subaddress
  6542. Notes:    this structure is located at offset 0 in the driver's data segment,
  6543.       which in turn may be read from the HP_VECTOR_TABLE (refer to note in
  6544.       main entry)
  6545.     only the first WORD is required, and everything from offset 6 onward
  6546.       is only required if the device wishes to perform device mapping
  6547. SeeAlso: #2997,#2998
  6548.  
  6549. Bitfields for HP EX-BIOS driver header attributes:
  6550. Bit(s)    Description    (Table 2995)
  6551.  15    this is a complete driver header
  6552.  14    "ATR_DEVCFG" reserved
  6553.  13    driver can be mapped with the parent vector at offset 0Ah
  6554.  12    driver can be mapped with the child vector at offset 0Ch
  6555.  11-9    driver type
  6556.     000 reserved vector
  6557.     001 free vector
  6558.     010 EX-BIOS service
  6559.     011 logical driver (mapped from parent to child)
  6560.     100 mappable driver (cannot be last in driver chain)
  6561.     101 mappable driver that is last in driver chain
  6562.     110 input driver (mappable)
  6563.     111 reserved
  6564.  8    "ATR_STRING" reserved
  6565.  7    call SF_START whenever driver is remapped
  6566.  6-5    addressing requirements
  6567.     00 no subaddresses required
  6568.     01 requires major address be stored at offset 0Eh
  6569.     10 requires minor address be stored at offset 0Fh
  6570.     11 required major,minor, and mid addresses (minor in low nybble of
  6571.           offset 0Fh, mid address in high nybble of 0Fh)
  6572.  4    driver can be shared between several parent drivers
  6573.  3    driver can be shared between several child drivers
  6574.  2    this driver header is in ROM
  6575.  1    "ATR_YIELD" reserved
  6576.  0    reserved
  6577. SeeAlso: #2994,#2996
  6578.  
  6579. Bitfields for HP EX-BIOS driver class:
  6580. Bit(s)    Description    (Table 2996)
  6581.  15    maps F1 to F8 softkeys
  6582.  14    keyboard
  6583.  13    cursor pad
  6584.  12    console device
  6585.  11    serial output device (may be capable of limited input)
  6586.  10    "CL_COMM" reserved
  6587.  9    interfaces multiple resources transparent to operating system
  6588.  8    serial output device filter (can be mapped between logical and physical
  6589.       driver to perform translations)
  6590.  7    addressed block device
  6591.  6    priority boot device
  6592.  5    logical graphics input device
  6593.  4    physical graphics input device (can map to child of another driver)
  6594.  3    "CL_GID" can map to an event
  6595.  2    physical touch device
  6596.  1    reserved
  6597.  0    class extension bit
  6598. Note:    special values: FFFFh maps to all other devices (V_PNULL), and 0000h
  6599.       maps to no other driver
  6600. SeeAlso: #2994
  6601.  
  6602. Format of HP EX-BIOS global data area:
  6603. Offset    Size    Description    (Table 2997)
  6604.  00h 20 BYTEs    reserved
  6605.  14h    BYTE    sound driver status
  6606.  15h    BYTE    number of pending key clicks (max 4) (see AH=34h/BP=0012h)
  6607.  16h    BYTE    current tick duration scaling factor
  6608.  17h    BYTE    current key click volume
  6609.  18h    WORD    current beep period (10 us increments) (see AH=3Ch/BP=0012h)
  6610.  1Ah    WORD    current beep duration (10 us increments)
  6611.  1Ch    BYTE    number of pending beep functions (max 4) (see AH=3Ah/BP=0012h)
  6612.  1Dh    BYTE    reserved
  6613.  1Eh    WORD    next unused string index number
  6614.  20h    ...    reserved
  6615. SeeAlso: #2994
  6616.  
  6617. Format of HP EX-BIOS Driver Describe Record:
  6618. Offset    Size    Description    (Table 2998)
  6619.  00h 16 BYTEs    EX-BIOS driver header data (see #2994)
  6620.  10h    BYTE    device GID type
  6621.         bits 7-4: device type
  6622.         bits 3-0: physical device link address
  6623.  11h    BYTE    physical device ID (see #3000)
  6624.  12h    WORD    logical device status bits (see #2999)
  6625.  14h    BYTE    physical device vector number (driver ID / 6)
  6626.  15h    BYTE    maximum number of axes reported (0-2)
  6627.  16h    BYTE    device class
  6628.         bits 7-4: current class
  6629.         bits 3-0: default class
  6630.  17h    BYTE    number of buttons/prompts
  6631.         bits 7-4: number of prompts
  6632.         bits 3-0: number of buttons
  6633.  18h    BYTE    reserved
  6634.  19h    BYTE    (physical devices only) maximum output burst length
  6635.  1Ah    BYTE    (physical devices only) number of write registers
  6636.  1Bh    BYTE    (physical devices only) number of read registers
  6637.  1Ch    BYTE    button transition flags (bit 0 = button0, etc.)
  6638.  1Dh    BYTE    current button states (bit 0 = button0, etc.)
  6639.  1Eh    WORD    device resolution
  6640.  20h    WORD    maximum x-axis count
  6641.  22h    WORD    maximum y-axis count
  6642.  24h    WORD    X position data for absolute devices
  6643.  26h    WORD    Y position data for absolute devices
  6644.  28h    WORD    X delta for relative devices
  6645.  2Ah    WORD    Y delta for relative devices
  6646.  2Ch    WORD    (logical devices only) X-axis scaling accumulator
  6647.         (fraction of one logical unit)
  6648.  2Eh    WORD    (logical devices only) Y-axis scaling accumulator
  6649.         (fraction of one logical unit)
  6650.  
  6651. Bitfields for HP logical device status flags:
  6652. Bit(s)    Description    (Table 2999)
  6653.  15-5    reserved
  6654.  4    event enabled
  6655.  3    tracking enabled
  6656.  2    clipping enabled
  6657.  1    button error occurred
  6658.  0    interrupt in progress
  6659. SeeAlso: #2998
  6660.  
  6661. (Table 3000)
  6662. Values for HP-HIL device ID:
  6663.  00h-02h reserved
  6664.  03h    Swiss-French keyboard
  6665.  04h-06h reserved
  6666.  07h    Canadian-English keyboard
  6667.  08h-0Ah reserved
  6668.  0Bh    Italian keyboard
  6669.  0Ch    reserved
  6670.  0Dh    Dutch keyboard
  6671.  0Eh    Swedish keyboard
  6672.  0Fh    German keyboard
  6673.  10h-12h reserved
  6674.  13h    Spanish keyboard
  6675.  14h    reserved
  6676.  15h    Belgian (Flemish) keyboard
  6677.  16h    Finnish keyboard
  6678.  17h    UK keyboard
  6679.  18h    French-Canadian keyboard
  6680.  19h    Swiss-German keyboard
  6681.  1Ah    Nerwegian keyboard
  6682.  1Bh    Frensh keyboard
  6683.  1Ch    Danish keyboard
  6684.  1Dh    Katakana keyboard
  6685.  1Eh    Latin American-Spanish keyboard
  6686.  1Fh    US-American keyboard
  6687.  20h-2Bh reserved
  6688.  2Ch-2Fh tone generator
  6689.  30h-3Fh reserved
  6690.  40h-5Bh reserved (character entry)
  6691.  5Ch-5Fh barcode reader
  6692.  60h-67h reserved (relative positions)
  6693.  68h-6Bh mouse
  6694.  6Ch-6Fh trackball
  6695.  70h-7Fh reserved (relative positions)
  6696.  80h-87h reserved (absolute positions)
  6697.  88h-8Bh touchpad
  6698.  8Ch-8Fh touch screen
  6699.  90h-97h graphics tablet
  6700.  98h-9Fh reserved (absolute positions)
  6701.  A0h-BFh compressed keyboard (91-93 keys)
  6702.  C0h-DFh extended keyboard (107-109 keys)
  6703.  E0h-FFh standard keyboard (85-87 keys)
  6704. --------N-6F01-------------------------------
  6705. INT 6F - 10NET - LOGOFF
  6706.     AH = 01h
  6707.     DS:DX -> superstation ID or nulls (12 bytes)
  6708. Return: CX = number of files closed
  6709.     AX = status (see also #2989)
  6710.         08FFh superstation ID not already logged in
  6711. SeeAlso: AH=00h"10NET",AH=81h
  6712. --------N-6F02-------------------------------
  6713. INT 6F - 10NET - STATUS OF NODE
  6714.     AH = 02h
  6715.     DS:DX -> 512-byte status record (see #3002)
  6716. Return: CF clear if successful
  6717.     CF set on error
  6718.         AX = error code (see #2989)
  6719. SeeAlso: INT 21/AX=5E01h"10NET"
  6720.  
  6721. (Table 3001)
  6722. Values for 10NET station type:
  6723.  00h    workstation
  6724.  01h    superstation
  6725.  02h    gateway station
  6726.  03h    gateway active
  6727.  04h    logged into multiple superstations
  6728.  05h    reserved
  6729.  
  6730. Format of 10NET node status record:
  6731. Offset    Size    Description    (Table 3002)
  6732.  00h  8 BYTEs    user name (0 if none)
  6733.  08h    BYTE    station type (see #3001)
  6734.  09h 24 BYTEs    list of superstations logged into more than one superstation
  6735.  21h 12 BYTEs    node ID
  6736.  2Dh    WORD    message count for this station (send for user node, receive for
  6737.           superstations)
  6738. ---for superstations only---
  6739.  2Fh    WORD    drives allocated (bit 0=A:, bit 1=B:,...)
  6740.  31h    BYTE    user service flags (see #3003)
  6741.  32h    BYTE    printers allocated (bit 0=LPT1,...)
  6742.  33h    BYTE    number of unprinted spool files
  6743.  34h    BYTE    number of opened files
  6744.  35h    BYTE    number of logged on nodes
  6745.  36h    BYTE    primary drive (1=A:)
  6746.  37h    BYTE    reserved
  6747.  38h  N BYTEs    list of logged on node IDs (each 12 bytes, max 37 IDs)
  6748. 1F4h  3 BYTEs    time: sec/min/hrs
  6749. 1F7h  3 BYTEs    date: day/mon/year-1980
  6750.  
  6751. Bitfields for 10NET user service flags:
  6752. Bit(s)    Description    (Table 3003)
  6753.  7    gate
  6754.  6    print permit on
  6755.  4    SUBMIT is on
  6756.  3    mail waiting for node
  6757.  2    calendar waiting for you
  6758.  1    news waiting for you
  6759.  0    mail waiting for you
  6760. --------b-6F0200-----------------------------
  6761. INT 6F - HP Vectra EX-BIOS - "F_SYSTEM SF_INIT" - START INITIALIZING DRIVER
  6762.     AX = 0200h
  6763.     BP = driver ID (see #2990)
  6764.     BX = "last-used DS" value from HP global data area (see #2997)
  6765. Return: AH = status (see #2993)
  6766.     BX = new "last-used DS" value
  6767.     BP,DS destroyed
  6768. SeeAlso: AH=00h"HP Vectra",AX=0202h,AH=0Ch"F_INS_FIXOWNDS"
  6769. --------b-6F0202-----------------------------
  6770. INT 6F - HP Vectra EX-BIOS - "F_SYSTEM SF_START" - COMPLETE DRIVER INITIALIZ.
  6771.     AX = 0202h
  6772.     BP = driver ID (see #2990)
  6773. Return: AH = status (see #2993)
  6774.     BP,DS destroyed
  6775. SeeAlso: AH=00h"HP Vectra",AX=0200h,AX=0204h"HP Vectra"
  6776. --------W-6F0204-----------------------------
  6777. INT 6F C - MS Windows 3.0 - DOS APPLICATION SWITCH HOOK
  6778.     AX = 0204h
  6779. Return: AX = status
  6780.         0000h switch is allowed
  6781.         other switch not allowed
  6782. Note:    intercepting this call will allow a DOS application to ensure that
  6783.       Windows will not switch away from it.
  6784. --------b-6F0204-----------------------------
  6785. INT 6F - HP Vectra EX-BIOS - "F_SYSTEM SF_REPORT_STATE" - GET DRIVER STATE
  6786.     AX = 0204h
  6787.     BP = driver ID (see #2990)
  6788. Return: AH = status (see #2993)
  6789.     DX = device state from Logical Describe Record (see #2998,#3004)
  6790.     BP,DS destroyed
  6791. SeeAlso: AH=00h"HP Vectra",AX=0200h,AX=0206h"HP Vectra"
  6792.  
  6793. Bitfields for HP Vectra V_HPHIL driver state:
  6794. Bit(s)    Description    (Table 3004)
  6795.  0    link configuration in progress
  6796.  1    reserved
  6797.  2    no devices attached
  6798.  3    general failure
  6799.  4,5    reserved
  6800.  6    HP-HIL driver open
  6801.  7    reserved
  6802.  8    link has been reconfigured
  6803.  9    error during output request
  6804.  10    reserved
  6805.  11    output request complete
  6806.  12    timeout
  6807.  13-15    reserved
  6808. --------b-6F0206-----------------------------
  6809. INT 6F - HP Vectra EX-BIOS - "F_SYSTEM SF_VERSION_DESC" - GET DRIVER VERSION
  6810.     AX = 0206h
  6811.     BP = driver ID (see #2990)
  6812. Return: AH = status (see #2993)
  6813.     BX = driver release date code
  6814.         (BL = BCD years since 1960, BH = BCD week number within year)
  6815.     CX = length of version string
  6816.     ES:DI -> version string
  6817.     BP,DS destroyed
  6818. SeeAlso: AH=00h"HP Vectra",AX=0200h,AX=0204h"HP Vectra",AX=0208h
  6819. --------b-6F0208-----------------------------
  6820. INT 6F - HP Vectra EX-BIOS - "F_SYSTEM SF_DEF_ATTR" - RESET TO DEFAULT ATTR
  6821.     AX = 0208h
  6822.     BP = driver ID (see #2990)
  6823. Return: AH = status (see #2993)
  6824.     BP,DS destroyed
  6825. SeeAlso: AH=00h"HP Vectra",AX=0200h,AX=020Ah,AX=020Ch
  6826. --------b-6F020A-----------------------------
  6827. INT 6F - HP Vectra EX-BIOS - "F_SYSTEM SF_GET_ATTR" - GET CURRENT ATTRIBUTES
  6828.     AX = 020Ah
  6829.     BP = driver ID (see #2990)
  6830. Return: AH = status (see #2993)
  6831.     BX,CX = current attributes
  6832.     BP,DS destroyed
  6833.     ---for V_LTOUCH, V_LPOINTER---
  6834.         BX = logical width
  6835.         CX = logical height
  6836. SeeAlso: AH=00h"HP Vectra",AX=0200h,AX=0208h,AX=020Ch
  6837. --------b-6F020C-----------------------------
  6838. INT 6F - HP Vectra EX-BIOS - "F_SYSTEM SF_SET_ATTR" - SET DEVICE ATTRIBUTES
  6839.     AX = 020Ch
  6840.     BP = driver ID (see #2990)
  6841.     BX,CX = new attributes
  6842.     ---for V_LTOUCH, V_LPOINTER---
  6843.         BX = new logical width
  6844.         CX = new logical height
  6845. Return: AH = status (see #2993)
  6846.     BP,DS destroyed
  6847. SeeAlso: AH=00h"HP Vectra",AX=0200h,AX=0208h,AX=020Ah
  6848. --------b-6F020E-----------------------------
  6849. INT 6F - HP Vectra EX-BIOS - "F_SYSTEM SF_OPEN" - RESERVE DRIVER FOR ACCESS
  6850.     AX = 020Eh
  6851.     BP = driver ID (see #2990) for V_HPHIL, others
  6852. Return: AH = status (see #2993)
  6853.     BP,DS destroyed
  6854. Desc:    place device in open state, which allows output to the device
  6855. SeeAlso: AH=00h"HP Vectra",AX=0200h,AX=0208h,AX=0210h
  6856. --------b-6F0210-----------------------------
  6857. INT 6F - HP Vectra EX-BIOS - "F_SYSTEM SF_CLOSE" - RELEASE DRIVER
  6858.     AX = 0210h
  6859.     BP = driver ID (see #2990) for V_HPHIL, others
  6860. Return: AH = status (see #2993)
  6861.     BP,DS destroyed
  6862. Desc:    place device in closed state, which disallows output to the device
  6863. SeeAlso: AH=00h"HP Vectra",AX=0200h,AX=0208h,AX=020Eh
  6864. --------b-6F0212-----------------------------
  6865. INT 6F - HP Vectra EX-BIOS - "F_SYSTEM SF_TIMEOUT" - REPORT REQUESTED TIMEOUT
  6866.     AX = 0212h
  6867.     BP = driver ID (see #2990)
  6868. Return: AH = status (see #2993)
  6869.     BP,DS destroyed
  6870. Desc:    report to driver that a previously-requested timeout interval has
  6871.       expired
  6872. SeeAlso: AH=00h"HP Vectra",AX=0200h,AX=0208h,AX=020Eh,AX=0214h,AX=0216h
  6873. --------b-6F0214-----------------------------
  6874. INT 6F - HP Vectra EX-BIOS - "F_SYSTEM SF_INTERVAL" - 60 HZ INTERVAL EXPIRED
  6875.     AX = 0214h
  6876.     BP = driver ID (see #2990)
  6877. Return: AH = status (see #2993)
  6878.     BP,DS destroyed
  6879. Desc:    report to driver that a previously-requested 60 Hz interval has
  6880.       expired
  6881. SeeAlso: AH=00h"HP Vectra",AX=0200h,AX=0208h,AX=020Eh,AX=0212h,AX=0216h
  6882. --------b-6F0216-----------------------------
  6883. INT 6F - HP Vectra EX-BIOS - "F_SYSTEM SF_TEST" - PERFORM HARDWARE TEST
  6884.     AX = 0216h
  6885.     BP = driver ID (see #2990)
  6886. Return: AH = status (see #2993)
  6887.     BP,DS destroyed
  6888.     ---on failure---
  6889.     CX = length of reason string
  6890.     ES:DI -> string describing error
  6891. SeeAlso: AH=00h"HP Vectra",AX=0200h,AX=0208h,AX=020Eh,AX=0212h,AX=0214h
  6892. --------N-6F03-------------------------------
  6893. INT 6F - 10NET - GET ADDRESS OF CONFIGURATION TABLE
  6894.     AH = 03h
  6895.     DS:DI -> node ID (optional)
  6896. Return: ES:BX -> configuration table (see #3005)
  6897. SeeAlso: AH=13h,INT 21/AX=5E01h"10NET"
  6898.  
  6899. Format of 10NET configuration table:
  6900. Offset    Size    Description    (Table 3005)
  6901. -41    WORD    local device table address
  6902. -39    WORD    extended network error mapping table address
  6903. -37    WORD    shared device table address
  6904. -35    WORD    mounted device table address
  6905. -33    BYTE    receive buffer counter
  6906. -32    BYTE    collect buffer counter
  6907. -31    WORD    TUF address
  6908. -29    BYTE    enable flag
  6909. -28    BYTE    FCB keep flag
  6910. -27    WORD    reserved
  6911. ---up to here, 10NET v3.3---
  6912. -25    WORD    count of dropped Send6F
  6913. -23    WORD    buffer start address
  6914. -21    WORD    comm driver base address
  6915. -19    WORD    send/receive retry count
  6916. -17    BYTE    number of 550ms loops before timeout
  6917. -16    WORD    UFH address
  6918. -14    WORD    CDIR address
  6919. -12    WORD    LTAB address
  6920. -10    WORD    SFH address
  6921. -8    WORD    FTAB address
  6922. -6    WORD    RLTAB address
  6923. -4    WORD    SMI address
  6924. -2    WORD    NTAB address
  6925.  00h    WORD    address of first CT_DRV
  6926.  02h    BYTE    number of DRV entries
  6927.  03h  8 BYTEs    login name
  6928.  0Bh 12 BYTEs    node ID (blank-padded)
  6929.  17h  6 BYTEs    node address
  6930.  1Dh    BYTE    flag
  6931.  1Eh    BYTE    CT_CFLG (chat permit)
  6932.         bit 1: sound bell
  6933.         bit 0: CHAT permit
  6934.  1Fh    BYTE    CT_PSFLG (see #3006)
  6935.  20h    BYTE    in 10Net flag
  6936.  21h    WORD    receive message count
  6937.  23h    WORD    send message count
  6938.  25h    WORD    retry count
  6939.  27h    WORD    failed count
  6940.  29h    WORD    driver errors
  6941.  2Bh    WORD    dropped responses/CHATs
  6942.  2Dh  9 BYTEs    LIST ID/NTAB address (3 entries--LPT1-3)
  6943.  36h  6 BYTEs    AUX ID/NTAB address (2 entries--COM1-2)
  6944.  3Ch    BYTE    active CB channel
  6945.  3Dh    BYTE    received 6F messages on queue
  6946.  3Eh  9 BYTEs    activity counters for channels 1-9
  6947. ---beyond here, 10NET v3.3---
  6948.  47h    BYTE    bit 0: RS232 gate
  6949.         bit 1: Send6F gate (user set)
  6950.  48h    DWORD    pointer into gate (user set)
  6951.  4Ch    DWORD    pointer into 10Net send
  6952.  50h  N WORDs    addresses of timer blocks
  6953.  
  6954. Bitfields for CT_PSFLG:
  6955. Bit(s)    Description    (Table 3006)
  6956.  5    PRINT permit
  6957.  4    KB initiated
  6958.  3    CHAT called FOXPTRM
  6959.  2    SUBMIT active
  6960.  1    SUBMIT received
  6961.  0    SUBMIT permit
  6962. --------N-6F04-------------------------------
  6963. INT 6F - 10NET - SEND
  6964.     AH = 04h
  6965.     DS:BX -> send record (see #3007)
  6966.     DS:DX -> data (max 1024 bytes)
  6967. Return: CF clear if successful
  6968.     CF set on error
  6969.         AX = error code (see #2989)
  6970. SeeAlso: AH=05h"10NET",AH=09h"10NET",AH=0Ah"10NET"
  6971.  
  6972. Format of 10NET send record:
  6973. Offset    Size    Description    (Table 3007)
  6974.  00h 12 BYTEs    receiving node's ID
  6975.         if first byte has high-order bit set, message is directed to
  6976.           the CT_RGATE vector at the receiver
  6977.         if second byte is 00h, first byte is taken as a CB
  6978.           channel number and delivered to all nodes on same channel
  6979.  0Ch    WORD     length of data at DX
  6980. --------b-6F04--BP0012-----------------------
  6981. INT 6F - HP Vectra EX-BIOS - "F_INS_BASEHPVT" - GET HP_VECTOR_TABLE ADDRESS
  6982.     AH = 04h
  6983.     BP = 0012h (driver ID for V_SYSTEM)
  6984. Return: AH = status (see #2993)
  6985.     ES = segment of HP_VECTOR_TABLE (see also AH=00h"HP Vectra")
  6986.     BP,DS destroyed
  6987. SeeAlso: AH=00h"HP Vectra",AH=06h"F_INS_XCHGFIX",AH=08h"F_INS_XCHGRSVD"
  6988. --------b-6F04--BP005A-----------------------
  6989. INT 6F - HP Vectra EX-BIOS - "F_TRACK_INIT" - RESET TRACKING DRIVER TO DEFAULTS
  6990.     AH = 04h
  6991.     BP = 005Ah (driver ID for V_STRACK)
  6992. Return: AH = status (see #2993)
  6993.     BP,DS destroyed
  6994. SeeAlso: AH=00h"HP Vectra",AH=06h"F_TRACK_ON",AH=08h"F_TRACK_OFF"
  6995. SeeAlso: AH=0Ah"F_DEF_MASKS",AH=0Ch"F_SET_LIMITS_X"
  6996. --------b-6F0400-----------------------------
  6997. INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_LOCK" - RESERVE SUB-ADDRESSES
  6998.     AX = 0400h
  6999.     BP = driver ID (see #2990)
  7000.     DH,DL = major,minor address (optional)
  7001. Return: AH = status (see #2993)
  7002.     BP,DS destroyed
  7003. Desc:    reserve specified sub-addresses on an already-allocated driver for
  7004.       exclusive access
  7005. Note:    this function is documented as present but unsupported in the drivers
  7006.       V_LTABLET, V_LPOINTER, and V_LTOUCH
  7007. SeeAlso: AX=0200h"HP Vectra",AX=0402h"SF_UNLOCK"
  7008. --------b-6F0400BP001E-----------------------
  7009. INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_ENABLE_SVC" - UNMASK 8041 SVC INT
  7010.     AX = 0400h
  7011.     BP = 001Eh (driver ID for V_S8259)
  7012. Return: AH = status (see #2993)
  7013.     BP,DS destroyed
  7014. SeeAlso: AH=00h"HP Vectra",AX=0402h"SF_DISABLE_SVC",AX=0404h"SF_ENABLE_KBD"
  7015. SeeAlso: AX=0408h"SF_ENABLE_HPHIL"
  7016. --------b-6F0400BP002A-----------------------
  7017. INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_DEF_LINKS" - SET DEFAULT PARENTS
  7018.     AX = 0400h
  7019.     BP = 002Ah (driver ID for V_SINPUT)
  7020. Return: AH = status (see #2993)
  7021.     BP,DS destroyed
  7022. Desc:    set the parent vectors in the physical device driver headers to their
  7023.       system defaults
  7024. SeeAlso: AH=00h"HP Vectra",AX=0402h/BP=002Ah,AX=0404h/BP=002Ah
  7025. SeeAlso: AH=06h"F_INQUIRE"
  7026. --------b-6F0400BP0054-----------------------
  7027. INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_VID_ID_HP" - INSTALLATION CHECK
  7028.     AX = 0400h
  7029.     BP = 0054h (driver ID for V_SVIDEO)
  7030.     ???
  7031. Return: AH = status (see #2993)
  7032.     BX = 4850h ('BP')
  7033.     BP,DS destroyed
  7034.     ???
  7035. Note:    only partially documented
  7036. SeeAlso: AX=0402h/BP=0054h,AX=0404h/BP=0054h,AX=0406h/BP=0054h
  7037. SeeAlso: AX=0408h/BP=0054h,AX=040Ah/BP=0054h
  7038. --------b-6F0400BP00CC-----------------------
  7039. INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_MOUSE_COM" - INIT INT 33 HANDLER
  7040.     AX = 0400h
  7041.     BP = 00CCh (driver ID for V_LHPMOUSE)
  7042. Return: AH = status (see #2993)
  7043.     BP,DS destroyed
  7044. SeeAlso: AH=00h"HP Vectra",AX=0402h/BP=00CCh
  7045. --------b-6F0402-----------------------------
  7046. INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_UNLOCK" - RELEASE SUB-ADDRESSES
  7047.     AX = 0402h
  7048.     BP = driver ID (see #2990)
  7049.     DH,DL = major,minor address (optional)
  7050. Return: AH = status (see #2993)
  7051.     BP,DS destroyed
  7052. Desc:    release specified sub-addresses from exclusive access
  7053. Note:    this function is documented as present but unsupported in the drivers
  7054.       V_LTABLET, V_LPOINTER, and VLTOUCH
  7055. SeeAlso: AX=0200h"HP Vectra",AX=0400h"SF_LOCK"
  7056. --------b-6F0402BP001E-----------------------
  7057. INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_DISABLE_SVC" - MASK 8041 SVC INT
  7058.     AX = 0402h
  7059.     BP = 001Eh (driver ID for V_S8259)
  7060. Return: AH = status (see #2993)
  7061.     BP,DS destroyed
  7062. SeeAlso: AH=00h"HP Vectra",AX=0400h/BP=001Eh,AX=0406h/BP=001Eh
  7063. SeeAlso: AX=040Ah/BP=001Eh
  7064. --------b-6F0402BP002A-----------------------
  7065. INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_GET_LINKS" - GET DRIVER LINK FIELDS
  7066.     AX = 0402h
  7067.     BP = 002Ah (driver ID for V_SINPUT)
  7068.     ES:SI -> buffer for link table (see #3008)
  7069. Return: AH = status (see #2993)
  7070.     ES:SI buffer filled
  7071.     BP,DS destroyed
  7072. Desc:    get the parent and child vectors for the seven supported physical
  7073.       device drivers
  7074. SeeAlso: AH=00h"HP Vectra",AX=0400h"SF_DEF_LINKS",AX=0404h"SF_SET_LINKS"
  7075. SeeAlso: AH=06h"F_INQUIRE"
  7076.  
  7077. Format of HP Vectra EX-BIOS driver link table:
  7078. Offset    Size    Description    (Table 3008)
  7079.  00h    BYTE    vector number of HP-HIL device #1's child
  7080.  01h    BYTE    vector number of HP-HIL device #1's parent
  7081.     ...
  7082.  0Ch    BYTE    vector number of HP-HIL device #7's child
  7083.  0Dh    BYTE    vector number of HP-HIL device #7's parent
  7084. --------b-6F0402BP0054-----------------------
  7085. INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_VID_GET_INFO" - GET DISPLAY INFO
  7086.     AX = 0402h
  7087.     BP = 0054h (driver ID for V_SVIDEO)
  7088.     ???
  7089. Return: AH = status (see #2993)
  7090.     BP,DS destroyed
  7091.     ???
  7092. Note:    only partially documented
  7093. SeeAlso: AX=0400h/BP=0054h,AX=0404h/BP=0054h,AX=0406h/BP=0054h
  7094. SeeAlso: AX=0408h/BP=0054h,AX=040Ah/BP=0054h
  7095. --------b-6F0402BP00CC-----------------------
  7096. INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_MOUSE_COM" - FORCE INT 33 INIT
  7097.     AX = 0402h
  7098.     BP = 00CCh (driver ID for V_LHPMOUSE)
  7099. Return: AH = status (see #2993)
  7100.     BP,DS destroyed
  7101. Desc:    set up INT 33 even if no mouse is installed
  7102. SeeAlso: AH=00h"HP Vectra",AX=0400h/BP=00CCh
  7103. --------b-6F0404-----------------------------
  7104. INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_TRACK_ON" - GRAPHICS CURSOR ON
  7105.     AX = 0404h
  7106.     BP = driver ID (see #2990) for V_LPOINTER, V_LTOUCH, V_LTABLET
  7107. Return: AH = status (see #2993)
  7108.     BP,DS destroyed
  7109. Desc:    enables graphics cursor tracking of the logical device's movement
  7110. SeeAlso: AH=00h"HP Vectra",AX=0400h"SF_LOCK",AX=0406h"SF_TRACK_OFF"
  7111. --------b-6F0404BP001E-----------------------
  7112. INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_ENABLE_KBD" - UNMASK 8041 OBF INT
  7113.     AX = 0404h
  7114.     BP = 001Eh (driver ID for V_S8259)
  7115. Return: AH = status (see #2993)
  7116.     BP,DS destroyed
  7117. SeeAlso: AH=00h"HP Vectra",AX=0400h"SF_ENABLE_SVC",AX=0406h"SF_DISABLE_KBD"
  7118. SeeAlso: AX=0408h"SF_ENABLE_HPHIL"
  7119. --------b-6F0404BP002A-----------------------
  7120. INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_SET_LINKS" - SET DRIVER LINK FIELDS
  7121.     AX = 0404h
  7122.     BP = 002Ah (driver ID for V_SINPUT)
  7123.     ES:SI -> buffer containing link table (see #3008)
  7124. Return: AH = status (see #2993)
  7125.     BP,DS destroyed
  7126. Desc:    specify the parent and child vectors for the seven supported physical
  7127.       device drivers
  7128. SeeAlso: AH=00h"HP Vectra",AX=0400h"SF_DEF_LINKS",AX=0402h"SF_GET_LINKS"
  7129. SeeAlso: AH=06h"F_INQUIRE"
  7130. --------b-6F0404BP0054-----------------------
  7131. INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_VID_SET_INFO" - SET EXT-CTRL INFO
  7132.     AX = 0404h
  7133.     BP = 0054h (driver ID for V_SVIDEO)
  7134.     ???
  7135. Return: AH = status (see #2993)
  7136.     BP,DS destroyed
  7137.     ???
  7138. Note:    only partially documented
  7139. SeeAlso: AX=0400h/BP=0054h,AX=0402h/BP=0054h,AX=0406h/BP=0054h
  7140. SeeAlso: AX=0408h/BP=0054h,AX=040Ah/BP=0054h
  7141. --------b-6F0406-----------------------------
  7142. INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_TRACK_OFF" - GRAPHICS CURSOR OFF
  7143.     AX = 0406h
  7144.     BP = driver ID (see #2990) for V_LPOINTER, V_LTOUCH, V_LTABLET
  7145. Return: AH = status (see #2993)
  7146.     BP,DS destroyed
  7147. Desc:    disables graphics cursor tracking of the logical device's movement
  7148. SeeAlso: AH=00h"HP Vectra",AX=0400h"SF_LOCK",AX=0404h"SF_TRACK_ON"
  7149. SeeAlso: AX=0408h"SF_CREATE_EVENT"
  7150. --------b-6F0406BP001E-----------------------
  7151. INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_DISABLE_KBD" - MASK 8041 OBF INT
  7152.     AX = 0406h
  7153.     BP = 001Eh (driver ID for V_S8259)
  7154. Return: AH = status (see #2993)
  7155.     BP,DS destroyed
  7156. SeeAlso: AH=00h"HP Vectra",AX=0402h"SF_DISABLE_SVC",AX=0404h"SF_ENABLE_KBD"
  7157. SeeAlso: AX=040Ah"SF_DISABLE_HPHIL"
  7158. --------b-6F0406BP0054-----------------------
  7159. INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_VID_MOD_INFO" - SET EXT-CTRL REG
  7160.     AX = 0406h
  7161.     BP = 0054h (driver ID for V_SVIDEO)
  7162.     ???
  7163. Return: AH = status (see #2993)
  7164.     BP,DS destroyed
  7165.     ???
  7166. Note:    only partially documented
  7167. SeeAlso: AX=0400h/BP=0054h,AX=0402h/BP=0054h,AX=0404h/BP=0054h
  7168. SeeAlso: AX=0408h/BP=0054h,AX=040Ah/BP=0054h
  7169. --------b-6F0406BP0114-----------------------
  7170. INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_CRV_RECONFIGURE" - RECONFIG LINK
  7171.     AX = 0406h
  7172.     BP = 0114h (driver ID for V_HPHIL)
  7173. Return: AH = status (see #2993)
  7174.     BP,DS destroyed
  7175. SeeAlso: AH=00h"HP Vectra",AX=020Eh,AX=0408h"SF_CRV_WR_PROMPTS"
  7176. SeeAlso: AX=0410h"SF_CRV_SELF_TEST"
  7177. --------b-6F0408-----------------------------
  7178. INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_CREATE_EVENT" - SET EVENT HANDLER
  7179.     AX = 0408h
  7180.     BP = driver ID (see #2990) for V_LPOINTER, V_LTOUCH, V_LTABLET
  7181.     ES:SI -> new event handler (see AH=00h"HP Vectra")
  7182.     DX = new handler's DS
  7183. Return: AH = status (see #2993)
  7184.     ES:SI -> old event handler
  7185.     DX = old handler's DS
  7186.     BP,DS destroyed
  7187. Desc:    specify routine to be called on logical device events
  7188. Note:    when events occur, the event handler is called with the same registers
  7189.       as the "F_ISR" function on AH=00h"HP Vectra"
  7190. SeeAlso: AH=00h"HP Vectra",AX=0400h"SF_LOCK",AX=0406h"SF_TRACK_OFF"
  7191. SeeAlso: AX=040Ah"SF_EVENT_ON",AX=040Ch"SF_EVENT_OFF",AH=06h"F_SAMPLE"
  7192. --------b-6F0408BP001E-----------------------
  7193. INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_ENABLE_HPHIL" - UNMASK HP-HIL INT
  7194.     AX = 0408h
  7195.     BP = 001Eh (driver ID for V_S8259)
  7196. Return: AH = status (see #2993)
  7197.     BP,DS destroyed
  7198. SeeAlso: AH=00h"HP Vectra",AX=0400h/BP=001Eh,AX=0404h/BP=001Eh
  7199. SeeAlso: AX=040Ah/BP=001Eh
  7200. --------b-6F0408BP0054-----------------------
  7201. INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_VID_GET_RES" - GET VIDMODE RESOLUTN
  7202.     AX = 0408h
  7203.     BP = 0054h (driver ID for V_SVIDEO)
  7204.     ???
  7205. Return: AH = status (see #2993)
  7206.     BP,DS destroyed
  7207.     ???
  7208. Note:    only partially documented
  7209. SeeAlso: AX=0400h/BP=0054h,AX=0402h/BP=0054h,AX=0404h/BP=0054h
  7210. SeeAlso: AX=0406h/BP=0054h,AX=040Ah/BP=0054h
  7211. --------b-6F0408BP0114-----------------------
  7212. INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_CRV_WR_PROMPTS" - WRITE PROMPT
  7213.     AX = 0408h
  7214.     BP = 0114h (driver ID for V_HPHIL)
  7215.     BX = device address indicator (see #3009)
  7216.     DH = HP HIL device major address
  7217.     DL = prompt number
  7218. Return: AH = status (see #2993)
  7219.     BP,DS destroyed
  7220. SeeAlso: AH=00h"HP Vectra",AX=020Eh,AX=0406h/BP=0114h,AX=040Ah/BP=0114h
  7221.  
  7222. Bitfields for HP Vectra V_HPHIL device address indicator:
  7223. Bit(s)    Description    (Table 3009)
  7224.  15-14    reserved
  7225.  13    address in DH is valid (must be set, clear is reserved)
  7226.  12    valid value in DL
  7227.  11-0    reserved
  7228. --------b-6F040A-----------------------------
  7229. INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_EVENT_ON" - ENABLE EVENT HANDLER
  7230.     AX = 040Ah
  7231.     BP = driver ID (see #2990) for V_LPOINTER, V_LTOUCH, V_LTABLET
  7232. Return: AH = status (see #2993)
  7233.     BP,DS destroyed
  7234. SeeAlso: AH=00h"HP Vectra",AX=0408h"SF_CREATE_EVENT",AX=040Ch"SF_EVENT_OFF"
  7235. SeeAlso: AX=040Eh"SF_CLIPPING_ON"
  7236. --------b-6F040ABP001E-----------------------
  7237. INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_DISABLE_HPHIL" - MASK HP-HIL INT
  7238.     AX = 040Ah
  7239.     BP = 001Eh (driver ID for V_S8259)
  7240. Return: AH = status (see #2993)
  7241.     BP,DS destroyed
  7242. SeeAlso: AH=00h"HP Vectra",AX=0402h/BP=001Eh,AX=0406h/BP=001Eh
  7243. SeeAlso: AX=0408h/BP=001Eh
  7244. --------b-6F040ABP0054-----------------------
  7245. INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_VID_SET_MODE" - SET VIDEO MODE
  7246.     AX = 040Ah
  7247.     BP = 0054h (driver ID for V_SVIDEO)
  7248.     ???
  7249. Return: AH = status (see #2993)
  7250.     BP,DS destroyed
  7251.     ???
  7252. Note:    only partially documented
  7253. SeeAlso: AX=0400h/BP=0054h,AX=0402h/BP=0054h,AX=0404h/BP=0054h
  7254. SeeAlso: AX=0406h/BP=0054h,AX=0408h/BP=0054h
  7255. --------b-6F040ABP00AE-----------------------
  7256. INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_CREATE_INTR" - CREATE INTERVAL ENTRY
  7257.     AX = 040Ah
  7258.     BP = 00AEh (driver ID for V_8041)
  7259.     BH = vector number of driver to be called regularly (vector addr / 6)
  7260. Return: AH = status (see #2993)
  7261.     BP,DS destroyed
  7262. Desc:    add a driver to the list (max eight) of drivers which will be called
  7263.       by the HP's 8041 at 60 Hz
  7264. Note:    the newly added entry will not be called until enabled with
  7265.       AX=040Eh/BP=00AEh
  7266. SeeAlso: AH=00h"HP Vectra",AX=040Ch/BP=00AEh,AX=040Eh/BP=00AEh
  7267. SeeAlso: AX=0412h/BP=00AEh,AX=0416h/BP=00AEh,AX=041Ah/BP=00AEh
  7268. --------b-6F040ABP0114-----------------------
  7269. INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_CRV_WR_ACK" - ACKNOWLEDGE DEVICE
  7270.     AX = 040Ah
  7271.     BP = 0114h (driver ID for V_HPHIL)
  7272.     BX = device address indicator (see #3009)
  7273.     DH = HP HIL device major address
  7274.     DL = acknowledge number (specific if 01h-07h, generic otherwise)
  7275. Return: AH = status (see #2993)
  7276.     BP,DS destroyed
  7277. SeeAlso: AH=00h"HP Vectra",AX=0406h/BP=0114h,AX=040Ch/BP=0114h
  7278. --------b-6F040C-----------------------------
  7279. INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_EVENT_OFF" - DISABLE EVENT HANDLER
  7280.     AX = 040Ch
  7281.     BP = driver ID (see #2990) for V_LPOINTER, V_LTOUCH, V_LTABLET
  7282. Return: AH = status (see #2993)
  7283.     BP,DS destroyed
  7284. SeeAlso: AH=00h"HP Vectra",AX=0408h"SF_CREATE_EVENT",AX=040Ah"SF_EVENT_ON"
  7285. --------b-6F040CBP00AE-----------------------
  7286. INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_DELET_INTR" - DELETE INTERVAL ENTRY
  7287.     AX = 040Ch
  7288.     BP = 00AEh (driver ID for V_8041)
  7289.     BH = vector number of driver to be removed (vector addr / 6)
  7290. Return: AH = status (see #2993)
  7291.     BP,DS destroyed
  7292. Desc:    remove a driver to the list (max eight) of drivers which will be called
  7293.       by the HP's 8041 at 60 Hz
  7294. SeeAlso: AH=00h"HP Vectra",AX=040Ah/BP=00AEh,AX=0410h/BP=00AEh
  7295. SeeAlso: AX=0412h/BP=00AEh,AX=0416h/BP=00AEh,AX=041Ah/BP=00AEh
  7296. --------b-6F040CBP0114-----------------------
  7297. INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_CRV_REPEAT" - SET KEY REPEAT RATE
  7298.     AX = 040Ch
  7299.     BP = 0114h (driver ID for V_HPHIL)
  7300.     BX = device address indicator (see #3009)
  7301.     DH = HP HIL device major address
  7302.     DL = repeat rate (00h = 30 Hz, 01h = 60 Hz)
  7303. Return: AH = status (see #2993)
  7304.     BP,DS destroyed
  7305. Note:    this function is only available if the driver is in the open state
  7306.       (see AX=020Eh"SF_OPEN")
  7307. SeeAlso: AH=00h"HP Vectra",AX=040Ah/BP=0114h,AX=040Eh/BP=0114h
  7308. --------b-6F040E-----------------------------
  7309. INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_CLIPPING_ON" - ENABLE CLIPPING
  7310.     AX = 040Eh
  7311.     BP = driver ID (see #2990) for V_LPOINTER, V_LTOUCH, V_LTABLET
  7312. Return: AH = status (see #2993)
  7313.     BP,DS destroyed
  7314. Desc:    causes the physical device's motion to be clipped to prevent overflow
  7315.       or underflow of the logical position
  7316. SeeAlso: AH=00h"HP Vectra",AX=040Ah"SF_EVENT_ON",AX=0410h"SF_CLIPPING_OFF"
  7317. --------b-6F040EBP00AE-----------------------
  7318. INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_ENABL_INTR" - START INTERRUPT SRVICE
  7319.     AX = 040Eh
  7320.     BP = 00AEh (driver ID for V_8041)
  7321.     BH = vector number of driver to be called regularly (vector addr / 6)
  7322. Return: AH = status (see #2993)
  7323.     BP,DS destroyed
  7324. Desc:    enable 60 Hz calling of a driver previously added to the list of
  7325.       drivers to be called by the HP's 8041
  7326. SeeAlso: AH=00h"HP Vectra",AX=040Ah/BP=00AEh,AX=0410h/BP=00AEh
  7327. SeeAlso: AX=0412h/BP=00AEh,AX=0416h/BP=00AEh,AX=041Ah/BP=00AEh
  7328. --------b-6F040EBP0114-----------------------
  7329. INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_CRV_DISABLE_REPEAT" - KEY REPT OFF
  7330.     AX = 040Eh
  7331.     BP = 0114h (driver ID for V_HPHIL)
  7332.     BX = device address indicator (see #3009)
  7333.     DH = HP HIL device major address
  7334. Return: AH = status (see #2993)
  7335.     BP,DS destroyed
  7336. Note:    this function is only available if the driver is in the open state
  7337.       (see AX=020Eh"SF_OPEN")
  7338. SeeAlso: AH=00h"HP Vectra",AX=040Ch/BP=0114h,AX=0410h/BP=0114h
  7339. SeeAlso: AX=0416h/BP=0114h
  7340. --------b-6F0410-----------------------------
  7341. INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_CLIPPING_OFF" - DISABLE CLIPPING
  7342.     AX = 0410h
  7343.     BP = driver ID (see #2990) for V_LPOINTER, V_LTOUCH, V_LTABLET
  7344. Return: AH = status (see #2993)
  7345.     BP,DS destroyed
  7346. Desc:    disables clipping of the physical device's motion, which may cause
  7347.       overflow or underflow of the logical position
  7348. SeeAlso: AH=00h"HP Vectra",AX=040Ah"SF_EVENT_ON",AX=040Eh"SF_CLIPPING_ON"
  7349. --------b-6F0410BP00AE-----------------------
  7350. INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_DISBL_INTR" - END INTERRUPT SERVICE
  7351.     AX = 0410h
  7352.     BP = 00AEh (driver ID for V_8041)
  7353.     BH = vector number of driver (vector addr / 6)
  7354. Return: AH = status (see #2993)
  7355.     BP,DS destroyed
  7356. Desc:    disable 60 Hz interval calls to the specified driver
  7357. SeeAlso: AH=00h"HP Vectra",AX=040Ch/BP=00AEh,AX=040Eh/BP=00AEh
  7358. SeeAlso: AX=0412h/BP=00AEh,AX=0416h/BP=00AEh,AX=041Ah/BP=00AEh
  7359. --------b-6F0410BP0114-----------------------
  7360. INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_CRV_SELF_TEST" - PERFORM SELFTEST
  7361.     AX = 0410h
  7362.     BP = 0114h (driver ID for V_HPHIL)
  7363.     BX = device address indicator (see #3009)
  7364.     DH = HP HIL device major address
  7365.     ES:SI -> buffer for result
  7366. Return: AH = status (see #2993)
  7367.     CX = number of bytes in buffer
  7368.     BP,DS destroyed
  7369. Note:    this function is only available if the driver is in the open state
  7370.       (see AX=020Eh"SF_OPEN")
  7371. SeeAlso: AH=00h"HP Vectra",AX=040Ch/BP=0114h,AX=0412h/BP=0114h
  7372. --------b-6F0412BP00AE-----------------------
  7373. INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_SET_RAMSW" - SET RAM SWITCH IN 8041
  7374.     AX = 0412h
  7375.     BP = 00AEh (driver ID for V_8041)
  7376. Return: AH = status (see #2993)
  7377.     BP,DS destroyed
  7378. Desc:    sets a flag in the 8041 indicating that a second 256K bank of RAM
  7379.       on the motherboard is enabled
  7380. SeeAlso: AH=00h"HP Vectra",AX=040Ch/BP=00AEh,AX=040Eh/BP=00AEh
  7381. SeeAlso: AX=0414h/BP=00AEh,AX=0416h/BP=00AEh,AX=041Ah/BP=00AEh
  7382. --------b-6F0412BP0114-----------------------
  7383. INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_CRV_REPORT_STATUS" - GET DEVSTATUS
  7384.     AX = 0412h
  7385.     BP = 0114h (driver ID for V_HPHIL)
  7386.     BX = device address indicator (see #3009)
  7387.     DH = HP HIL device major address
  7388.     ES:SI -> 15-byte buffer for status
  7389. Return: AH = status (see #2993)
  7390.     CX = number of bytes returned in buffer
  7391.     BP,DS destroyed
  7392. Note:    this function is only available if the driver is in the open state
  7393.       (see AX=020Eh"SF_OPEN")
  7394. SeeAlso: AH=00h"HP Vectra",AX=0410h/BP=0114h,AX=0414h/BP=0114h
  7395. --------b-6F0414BP00AE-----------------------
  7396. INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_CLR_RAMSW" - CLEAR 8041 RAM SWITCH
  7397.     AX = 0414h
  7398.     BP = 00AEh (driver ID for V_8041)
  7399. Return: AH = status (see #2993)
  7400.     BP,DS destroyed
  7401. Desc:    clears a flag in the 8041 indicating that a second 256K bank of RAM
  7402.       on the motherboard is enabled, causing the second bank to be disabled
  7403. Note:    this function should normally never be called
  7404. SeeAlso: AH=00h"HP Vectra",AX=040Ch/BP=00AEh,AX=040Eh/BP=00AEh
  7405. SeeAlso: AX=0412h/BP=00AEh,AX=0418h/BP=00AEh,AX=041Ah/BP=00AEh
  7406. --------b-6F0414BP0114-----------------------
  7407. INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_CRV_REPORT_NAME" - GET DEV NAME
  7408.     AX = 0414h
  7409.     BP = 0114h (driver ID for V_HPHIL)
  7410.     BX = device address indicator (see #3009)
  7411.     DH = HP HIL device major address
  7412.     ES:SI -> 15-byte buffer for name
  7413. Return: AH = status (see #2993)
  7414.     CX = number of bytes returned in buffer
  7415.     BP,DS destroyed
  7416. Note:    this function is only available if the driver is in the open state
  7417.       (see AX=020Eh"SF_OPEN")
  7418. SeeAlso: AH=00h"HP Vectra",AX=0412h/BP=0114h
  7419. --------b-6F0416BP00AE-----------------------
  7420. INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_SET_CRTSW" - SET CRT TO MULTIMODE
  7421.     AX = 0416h
  7422.     BP = 00AEh (driver ID for V_8041)
  7423. Return: AH = status (see #2993)
  7424.     BP,DS destroyed
  7425. Desc:    sets a flag in the 8041 indicating that the primary display is the
  7426.       Multimode graphics adapter (default)
  7427. SeeAlso: AH=00h"HP Vectra",AX=040Ch/BP=00AEh,AX=040Eh/BP=00AEh
  7428. SeeAlso: AX=0412h/BP=00AEh,AX=0418h/BP=00AEh,AX=041Ah/BP=00AEh
  7429. --------b-6F0416BP0114-----------------------
  7430. INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_KEYBOARD_REPEAT" - SET TYPEMATIC
  7431.     AX = 0416h
  7432.     BP = 0114h (driver ID for V_HPHIL)
  7433.     BH = what to set (00h typematic rate, 01h delay, 02h both)
  7434.     BL = flag (00h = non-CCP keypad, 01h = Cursor Control Pad only)
  7435.     DL = rate
  7436.         bits 7-4: delay value
  7437.         bits 3-0: typematic rate
  7438. Return: AH = status (see #2993)
  7439.     BP,DS destroyed
  7440. SeeAlso: AH=00h"HP Vectra",AX=040Eh/BP=0114h,AX=0418h/BP=0114h
  7441. --------b-6F0418BP00AE-----------------------
  7442. INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_CLR_CRTSW" - SET CRT TO MONOCHROME
  7443.     AX = 0418h
  7444.     BP = 00AEh (driver ID for V_8041)
  7445. Return: AH = status (see #2993)
  7446.     BP,DS destroyed
  7447. Desc:    clears a flag in the 8041, indicating that the primary display is the
  7448.       monochrome adapter
  7449. SeeAlso: AH=00h"HP Vectra",AX=040Ch/BP=00AEh,AX=040Eh/BP=00AEh
  7450. SeeAlso: AX=0414h/BP=00AEh,AX=0416h/BP=00AEh,AX=041Ah/BP=00AEh
  7451. --------b-6F0418BP0114-----------------------
  7452. INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_KEYBOARD_LED" - SET KEYBOARD LEDS
  7453.     AX = 0418h
  7454.     BP = 0114h (driver ID for V_HPHIL)
  7455.     BL = new LED states
  7456.         bit 0: scroll lock
  7457.         bit 1: NumLock
  7458.         bit 2: CapsLock
  7459. Return: AH = status (see #2993)
  7460.     BP,DS destroyed
  7461. SeeAlso: AH=00h"HP Vectra",AX=040Eh/BP=0114h,AX=0416h/BP=0114h
  7462. --------b-6F041ABP00AE-----------------------
  7463. INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_PASS_THRU" - SEND DATA BYTE TO 8041
  7464.     AX = 041Ah
  7465.     BP = 00AEh (driver ID for V_8041)
  7466.     BL = byte to send to 8041
  7467. Return: AH = status (see #2993)
  7468.     BP,DS destroyed
  7469. SeeAlso: AH=00h"HP Vectra",AX=040Ah/BP=00AEh,AX=040Eh/BP=00AEh
  7470. --------N-6F05-------------------------------
  7471. INT 6F - 10NET - RECEIVE
  7472.     AH = 05h
  7473.     CX = number of seconds before timeout
  7474.     DS:DX -> receive buffer (see #3010)
  7475. Return: CF clear if successful
  7476.         AH = FEh if dequeued message is a CB message
  7477.     CF set on error
  7478.         AX = error code (see #2989)
  7479. SeeAlso: AH=04h"10NET"
  7480.  
  7481. Format of 10NET receive buffer:
  7482. Offset    Size    Description    (Table 3010)
  7483.  00h 12 BYTEs    sending node's ID
  7484.  0Ch    WORD    length of message
  7485.  0Eh  N BYTEs    message (maximum 1024 bytes)
  7486. --------b-6F06-------------------------------
  7487. INT 6F - HP Vectra EX-BIOS - "F_PUT_BYTE" - WRITE A BYTE OF DATA TO DEVICE
  7488.     AH = 06h
  7489.     BP = driver ID (see #2990) for V_HPHIL, others
  7490.     AL = value to output
  7491.     ---if driver is V_HPHIL---
  7492.     BX = device address indicator (see #3009)
  7493.     DH = HP HIL device major address
  7494.     DL = HP-HIL device register (00h-7Fh)
  7495. Return: AH = status (see #2993)
  7496.     BP,DS destroyed
  7497. Desc:    output a byte to a specific HP-HIL device register
  7498. Note:    this function is only available if the driver is in the open state
  7499.       (see AX=020Eh"SF_OPEN")
  7500. SeeAlso: AH=04h"HP Vectra",AH=08h"F_GET_BYTE",AH=0Ah"F_PUT_BUFFER"
  7501. --------b-6F06-------------------------------
  7502. INT 6F - HP Vectra EX-BIOS - "F_SAMPLE" - POLL CURRENT ABSOLUTE POSITION
  7503.     AH = 06h
  7504.     BP = driver ID (see #2990) for V_LTOUCH, V_LPOINTER, V_LTABLET, etc.
  7505. Return: AH = status (see #2993)
  7506.     BX = current logical X position
  7507.     CX = current logical Y position
  7508.     DL = button transitions (bit N = button N state has changed)
  7509.     DH = current button states (bit N = current button N state)
  7510.     ES:0000h -> logical device's Describe Record (see #2998)
  7511.     BP,DS destroyed
  7512. SeeAlso: AH=00h"HP Vectra",AX=040Ah"SF_EVENT_ON",AX=040Eh"SF_CLIPPING_ON"
  7513. --------b-6F06--BP0012-----------------------
  7514. INT 6F - HP Vectra EX-BIOS - "F_INS_XCHGFIX" - EXCH VALUES WITH FIXED VECTOR
  7515.     AH = 06h
  7516.     BP = 0012h (driver ID for V_SYSTEM)
  7517.     BX = vector address
  7518.     DX = new value for DS
  7519.     ES:DI -> new CS:IP entry point
  7520. Return: AH = status (see #2993)
  7521.     DX = old value for DS
  7522.     ES:DI -> old CS:IP entry point
  7523.     BP,DS destroyed
  7524. Desc:    replace an existing EX-BIOS driver at a fixed HPVT location without
  7525.       initialization
  7526. SeeAlso: AH=00h"HP Vectra",AH=04h"F_INS_BASEHPVT",AH=08h"F_INS_XCHGRSVD"
  7527. SeeAlso: AH=0Ah"F_INS_XCHGFREE",AH=0Ch"F_INS_FIXOWNDS"
  7528. --------b-6F06--BP002A-----------------------
  7529. INT 6F - HP Vectra EX-BIOS - "F_INQUIRE" - GET DRIVER PHYSICAL DESCRIBE RECORD
  7530.     AH = 06h
  7531.     BP = 002Ah (driver ID for V_SINPUT)
  7532.     AL = HP-HIL physical device number (01h-07h)
  7533. Return: AH = status (see #2993)
  7534.     ES:SI -> physical describe record for driver
  7535.     BP,DS destroyed
  7536. Note:    the returned physical describe record must not be modified
  7537. SeeAlso: AH=00h"HP Vectra",AX=0400h/BP=002Ah,AH=08h/BP=002Ah,AH=0Ah/BP=002Ah
  7538. SeeAlso: AH=0Ch/BP=002Ah
  7539. --------b-6F06--BP005A-----------------------
  7540. INT 6F - HP Vectra EX-BIOS - "F_TRACK_ON" - ENABLE CURSOR TRACKING
  7541.     AH = 06h
  7542.     BP = 005Ah (driver ID for V_STRACK)
  7543. Return: AH = status (see #2993)
  7544.     BP,DS destroyed
  7545. SeeAlso: AH=00h"HP Vectra",AH=04h"F_TRACK_INIT",AH=08h"F_TRACK_OFF"
  7546. SeeAlso: AH=0Ah"F_DEF_MASKS",AH=0Ch"F_SET_LIMITS_X"
  7547. --------N-6F07-------------------------------
  7548. INT 6F - 10NET - LOCK HANDLE
  7549.     AH = 07h
  7550.     BX = file handle
  7551.     CX:DX = starting offset in file
  7552.     SI = record length
  7553. Return: CF clear if successful
  7554.     CF set on error
  7555.         AX = error code (see also AH=00h)
  7556.         0002h file not found
  7557. SeeAlso: AH=08h"10NET",AH=0Fh,INT 21/AH=5Ch
  7558. --------N-6F08-------------------------------
  7559. INT 6F - 10NET - UNLOCK HANDLE
  7560.     AH = 08h
  7561.     BX = file handle
  7562.     AL = mode
  7563.         00h unlock all
  7564.         01h unlock record at CX:DX
  7565. Return: CF clear if successful
  7566.     CF set on error
  7567.         AX = error code (see also AH=00h)
  7568.         0002h file not found
  7569. SeeAlso: AH=07h,AH=0Fh,INT 21/AH=5Ch
  7570. --------b-6F08-------------------------------
  7571. INT 6F - HP Vectra EX-BIOS - "F_GET_BYTE" - READ A BYTE OF DATA FROM DEVICE
  7572.     AH = 08h
  7573.     BP = driver ID (see #2990) for V_HPHIL (0114h), others
  7574.     ---if device is V_HPHIL---
  7575.     BX = device address indicator (see #3009)
  7576.     DH = HP HIL device major address
  7577.     DL = HP-HIL device register (00h-7Fh)
  7578. Return: AH = status (see #2993)
  7579.     AL = value read from device
  7580.     BP,DS destroyed
  7581. Desc:    generic read-byte function; for driver V_HPHIL, retrieves the value
  7582.       of a specific HP-HIL device register
  7583. Note:    this function is only available if the driver is in the open state
  7584.       (see AX=020Eh"SF_OPEN")
  7585. SeeAlso: AH=06h"F_PUT_BYTE",AH=0Ah"F_PUT_BUFFER",AH=0Ch"F_GET_BUFFER"
  7586. --------b-6F08--BP0012-----------------------
  7587. INT 6F - HP Vectra EX-BIOS - "F_INS_XCHGRSVD" - EXCH VALUES WITH RESRVED VECTOR
  7588.     AH = 08h
  7589.     BP = 0012h (driver ID for V_SYSTEM)
  7590.     DX = new value for DS
  7591.     ES:DI -> new CS:IP entry point
  7592. Return: AH = status (00h,F6h) (see also #2993)
  7593.         00h successful
  7594.         BX = vector address used
  7595.         DX = old value for DS
  7596.         ES:DI -> old CS:IP entry point
  7597.     BP,DS destroyed
  7598. Desc:    exchange the supplied entry point and DS with the values in the next
  7599.       reserved entry in the HP_VECTOR_TABLE
  7600. Note:    returns AH=F6h if no more reserved vectors are available
  7601. SeeAlso: AH=00h"HP Vectra",AH=04h/BP=0012h,AH=06h/BP=0012h,AH=0Ah/BP=0012h
  7602. SeeAlso: AH=0Ch/BP=0012h
  7603. --------b-6F08--BP002A-----------------------
  7604. INT 6F - HP Vectra EX-BIOS - "F_INQUIRE_ALL" - GET DRIVER STATUS TABLE
  7605.     AH = 08h
  7606.     BP = 002Ah (driver ID for V_SINPUT)
  7607.     ES:SI -> buffer for device status table (see #3011)
  7608. Return: AH = status (see #2993)
  7609.     ES:SI buffer filled
  7610.     BP,DS destroyed
  7611. Note:    the returned physical describe record must not be modified
  7612. SeeAlso: AH=00h"HP Vectra",AX=0400h/BP=002Ah,AH=06h/BP=002Ah,AH=0Ah/BP=002Ah
  7613. SeeAlso: AH=0Ch/BP=002Ah
  7614.  
  7615. Format of HP Vectra HP-HIL physical device status table:
  7616. Offset    Size    Description    (Table 3011)
  7617.  00h    BYTE    status for HP-HIL device #1
  7618.         bit 0: device present
  7619.         bits 7-2 reserved
  7620.  01h    BYTE    device ID for HP-HIL device #1
  7621.     ...
  7622.  0Ch    BYTE    status for HP-HIL device #7
  7623.  0Dh    BYTE    device ID for HP-HIL device #7
  7624. --------b-6F08--BP005A-----------------------
  7625. INT 6F - HP Vectra EX-BIOS - "F_TRACK_OFF" - DISABLE CURSOR TRACKING
  7626.     AH = 08h
  7627.     BP = 005Ah (driver ID for V_STRACK)
  7628. Return: AH = status (see #2993)
  7629.     BP,DS destroyed
  7630. Note:    also removes the graphics cursor sprite from the screen
  7631. SeeAlso: AH=00h"HP Vectra",AH=04h"F_TRACK_INIT",AH=06h"F_TRACK_ON"
  7632. SeeAlso: AH=0Ah"F_DEF_MASKS",AH=0Ch"F_SET_LIMITS_X"
  7633. --------N-6F09-------------------------------
  7634. INT 6F - 10NET - SUBMIT
  7635.     AH = 09h
  7636.     DS:BX -> submit record (see #3012)
  7637. SeeAlso: AH=04h"10NET"
  7638.  
  7639. Format of 10NET submit record:
  7640. Offset    Size    Description    (Table 3012)
  7641.  00h 12 BYTEs    destination node ID (must be logged in)
  7642.  0Ch    WORD    length+2 of following 'command line' text
  7643.  0Eh  N BYTEs    command line text (<=100 bytes), system adds CR
  7644. --------N-6F0A-------------------------------
  7645. INT 6F - 10NET - CHAT
  7646.     AH = 0Ah
  7647.     DS:BX -> control parameters (see #3013)
  7648.     DS:DX -> chat message (see #3014)
  7649. SeeAlso: AH=04h"10NET",AH=8Ah
  7650.  
  7651. Format of 10NET chat control parameters:
  7652. Offset    Size    Description    (Table 3013)
  7653.  00h  8 BYTEs    sender ID, defaults to node's userID if nulls
  7654.  08h  8 BYTEs    destination user ID, 'EVERYONE' may be used
  7655.  10h 12 BYTEs    destination node ID
  7656.  
  7657. Format of 10NET chat message:
  7658. Offset    Size    Description    (Table 3014)
  7659.  00h    WORD    length+2 of following text
  7660.  02h  N BYTEs    text, max 101 bytes
  7661. --------b-6F0A-------------------------------
  7662. INT 6F - HP Vectra EX-BIOS - "F_PUT_BUFFER" - WRITE A BUFFER TO DEVICE
  7663.     AH = 0Ah
  7664.     BP = driver ID (see #2990) for V_HPHIL (0114h), others
  7665.     CX = number of bytes to write
  7666.     ES:DI -> buffer containing data
  7667.     ---if driver is V_HPHIL---
  7668.     BX = device address indicator (see #3009)
  7669.     DH = HP HIL device major address
  7670.     DL = HP-HIL device register (00h-7Fh)
  7671. Return: AH = status (see #2993)
  7672.     CX = number of unwritten bytes left in buffer
  7673.     BP,DS destroyed
  7674. SeeAlso: AH=06h"F_PUT_BYTE",AH=0Ah"F_PUT_BLOCK",AH=0Ch"F_GET_BUFFER"
  7675. SeeAlso: AH=0Eh"F_PUT_WORD"
  7676. --------b-6F0A-------------------------------
  7677. INT 6F - HP Vectra EX-BIOS - "F_PUT_BLOCK" - WRITE BLOCKS TO DEVICE
  7678.     AH = 0Ah
  7679.     BP = driver ID (see #2990) for block device
  7680.     DH = device major number
  7681.     DL = device minor number
  7682.     ES:DI -> command block (see #3015)
  7683. Return: AH = status (see #2993)
  7684.     BX = operation status
  7685.     BP,DS destroyed
  7686. SeeAlso: AH=06h"F_PUT_BYTE",AH=0Ah"F_PUT_BUFFER",AH=0Ch"F_GET_BUFFER"
  7687. SeeAlso: AH=0Eh"F_PUT_WORD"
  7688.  
  7689. Format of HP Vectra F_PUT_BLOCK/F_GET_BLOCK command block:
  7690. Offset    Size    Description    (Table 3015)
  7691.  00h    DWORD    data transfer address
  7692.  04h    WORD    number of blocks
  7693.  06h    DWORD    block address (some devices only use low word)
  7694. --------b-6F0A--BP0012-----------------------
  7695. INT 6F - HP Vectra EX-BIOS - "F_INS_XCHGFREE" - EXCH VALUES WITH FREE VECTOR
  7696.     AH = 0Ah
  7697.     BP = 0012h (driver ID for V_SYSTEM)
  7698.     DX = new value for DS
  7699.     ES:DI -> new CS:IP entry point
  7700. Return: AH = status (00h,F6h) (see also #2993)
  7701.         00h successful
  7702.         BX = vector address used
  7703.         DX = old value for DS
  7704.         ES:DI -> old CS:IP entry point
  7705.     BP,DS destroyed
  7706. Desc:    exchange the supplied entry point and DS with the values in the next
  7707.       free entry in the HP_VECTOR_TABLE
  7708. Note:    returns AH=F6h if no more reserved vectors are available
  7709. SeeAlso: AH=00h"HP Vectra",AH=04h/BP=0012h,AH=06h/BP=0012h,AH=08h/BP=0012h
  7710. SeeAlso: AH=0Ch/BP=0012h
  7711. --------b-6F0A--BP002A-----------------------
  7712. INT 6F - HP Vectra EX-BIOS - "F_INQUIRE_FIRST" - GET PHYSICAL DRIVER VECTOR
  7713.     AH = 0Ah
  7714.     BP = 002Ah (driver ID for V_SINPUT)
  7715. Return: AH = status (see #2993)
  7716.     BX = vector address for first HP-HIL device
  7717.     BP,DS destroyed
  7718. Note:    all seven HP-HIL devices use consecutive vectors in the
  7719.       HP_VECTOR_TABLE
  7720. SeeAlso: AH=00h"HP Vectra",AX=0400h/BP=002Ah,AH=06h/BP=002Ah,AH=08h/BP=002Ah
  7721. SeeAlso: AH=0Ch/BP=002Ah
  7722. --------b-6F0A--BP005A-----------------------
  7723. INT 6F - HP Vectra EX-BIOS - "F_DEF_MASKS" - DEFINE GRAPHICS CURSOR MASKS
  7724.     AH = 0Ah
  7725.     BP = 005Ah (driver ID for V_STRACK)
  7726.     BH = width of save area in bytes
  7727.     BL = hot-spot X coordinate
  7728.     CH = height in scan lines
  7729.     CL = hot-spot Y coordinate
  7730.     ES:SI -> sprite mask (screen mask followed by XOR sprite mask)
  7731. Return: AH = status (see #2993)
  7732.     BP,DS destroyed
  7733. Note:    the save area is one byte wider than the actual sprite mask; the total
  7734.       size of the sprite is at most 144 bytes
  7735. SeeAlso: AH=00h"HP Vectra",AH=04h"F_TRACK_INIT",AH=08h"F_TRACK_OFF"
  7736. SeeAlso: AH=0Ch"F_SET_LIMITS_X",AH=10h"F_PUT_SPRITE",AH=12h"F_REMOVE_SPRITE"
  7737. --------N-6F0B-------------------------------
  7738. INT 6F - 10NET - LOCK SEMAPHORE, RETURN IMMEDIATELY
  7739.     AH = 0Bh
  7740.     AL = drive number or 0
  7741.     ES:SI = Ethernet address or 0
  7742.     DS:BX -> 31-byte ASCIZ semaphore name
  7743. Return: AL = status (see #3016)
  7744. Note:    same as INT 60/AH=12h
  7745. SeeAlso: AH=0Ch"10NET",INT 60/AH=12h
  7746.  
  7747. (Table 3016)
  7748. Values for 10NET status:
  7749.  00h    successful
  7750.  01h    semaphore currently locked
  7751.  02h    server not responding
  7752.  03h    invalid semaphore name
  7753.  04h    semaphore list is full
  7754.  05h    invalid drive ID
  7755.  06h    invalid Ethernet address
  7756.  07h    not logged in
  7757.  08h    write to network failed
  7758.  09h    semaphore already logged in this CPU
  7759. SeeAlso: #2989
  7760. Index:    error codes;10-Net|10-Net;error codes
  7761. --------N-6F0C-------------------------------
  7762. INT 6F - 10NET - UNLOCK SEMAPHORE
  7763.     AH = 0Ch
  7764.     AL = drive number or 0
  7765.     ES:SI = Ethernet address or 0
  7766.     DS:BX -> 31-byte ASCIZ semaphore name
  7767. Return: AL = status (see also #3016)
  7768.         01h semaphore not locked
  7769. Note:    same as INT 60/AH=13h
  7770. SeeAlso: AH=0Bh,INT 60/AH=13h
  7771. --------b-6F0C-------------------------------
  7772. INT 6F - HP Vectra EX-BIOS - "F_GET_BUFFER" - READ A BUFFER OF DATA FROM DEVICE
  7773.     AH = 0Ch
  7774.     BP = driver ID (see #2990) for V_HPHIL (0114h), others
  7775.     CX = number of bytes or blocks to read
  7776.     DS:SI -> buffer for received data
  7777. Return: AH = status (see #2993 at AH=00h"HP Vectra")
  7778.     BP,DS destroyed
  7779. SeeAlso: AH=08h"F_GET_BYTE",AH=0Ah"F_PUT_BUFFER",AH=0Ch"F_GET_BLOCK"
  7780. SeeAlso: AH=10h"F_GET_WORD"
  7781. --------b-6F0C-------------------------------
  7782. INT 6F - HP Vectra EX-BIOS - "F_GET_BLOCK" - READ BLOCKS OF DATA FROM DEVICE
  7783.     AH = 0Ch
  7784.     BP = driver ID (see #2990)
  7785.     DH = device major number
  7786.     DL = device minor number
  7787.     ES:DI -> command block (see #3015)
  7788. Return: AH = status (see #2993 at AH=00h"HP Vectra")
  7789.     BX = operation status
  7790.     BP,DS destroyed
  7791. SeeAlso: AH=08h"F_GET_BYTE",AH=0Ah"F_PUT_BLOCK",AH=0Ch"F_GET_BUFFER"
  7792. SeeAlso: AH=10h"F_GET_WORD"
  7793. --------b-6F0C--BP0012-----------------------
  7794. INT 6F - HP Vectra EX-BIOS - "F_INS_FIXOWNDS" - INSTALL VALUES IN FIXED VECTOR
  7795.     AH = 0Ch
  7796.     BP = 0012h (driver ID for V_SYSTEM)
  7797.     BX = vector address used
  7798.     ES:DI -> new CS:IP entry point
  7799. Return: AH = status (00h) (see #2993)
  7800.     BP,DS destroyed
  7801. Note:    on installation, the given entry point will be invoked with an SF_INIT
  7802.       call (see AX=0200h"SF_INIT"), which should return the routine's DS
  7803.       in BX.  If the SF_INIT call returns with error code FEh, the power-on
  7804.       self-test sequence will be called.
  7805. SeeAlso: AH=00h"HP Vectra",AH=04h/BP=0012h,AH=06h/BP=0012h,AH=08h/BP=0012h
  7806. SeeAlso: AH=0Eh/BP=0012h,AH=12h/BP=0012h
  7807. --------b-6F0C--BP002A-----------------------
  7808. INT 6F - HP Vectra EX-BIOS - "F_INQUIRE_ENTRY" - GET GID DRIVER ENTRY POINT
  7809.     AH = 0Ch
  7810.     BP = 002Ah (driver ID for V_SINPUT)
  7811. Return: AH = status (see #2993)
  7812.     ES:BX -> physical GID driver CS:IP
  7813.     BP,DS destroyed
  7814. SeeAlso: AH=00h"HP Vectra",AX=0400h/BP=002Ah,AH=06h/BP=002Ah,AH=08h/BP=002Ah
  7815. SeeAlso: AH=0Ah/BP=002Ah
  7816. --------b-6F0C--BP005A-----------------------
  7817. INT 6F - HP Vectra EX-BIOS - "F_SET_LIMITS_X" - SET HORIZONTAL TRACKING LIMITS
  7818.     AH = 0Ch
  7819.     BP = 005Ah (driver ID for V_STRACK)
  7820.     CX = minimum X coordinate
  7821.     DX = maximum X coordinate
  7822. Return: AH = status (see #2993)
  7823.     BP,DS destroyed
  7824. SeeAlso: AH=00h"HP Vectra",AH=04h/BP=005Ah,AH=08h/BP=005Ah,AH=0Eh/BP=005Ah
  7825. SeeAlso: AH=10h/BP=005Ah,AH=12h/BP=005Ah,INT 33/AX=0007h
  7826. --------N-6F0D-------------------------------
  7827. INT 6F - 10NET - "WHO" - ENUMERATE USERS ON NETWORK
  7828.     AH = 0Dh
  7829.     AL = type code
  7830.         01h return superstations only
  7831.         02h return non-superstations only
  7832.         otherwise return all
  7833.     CX = length of data buffer
  7834.     DS:DX -> array of records to be filled (see #3017)
  7835. Return: CL = number of records returned (responding stations)
  7836. SeeAlso: AH=16h,AH=8Dh
  7837.  
  7838. Format of station record:
  7839. Offset    Size    Description    (Table 3017)
  7840.  00h 12 BYTEs    node ID
  7841.  0Ch    BYTE    station flags (see #3018)
  7842. ---if AL = 01h---
  7843.  0Dh    BYTE    version number
  7844.  0Eh    WORD    level number of 10Net software in responding node
  7845. ---if AL = 02h---
  7846.  0Dh  8 BYTEs    user ID
  7847.  15h    BYTE    version number
  7848.  16h    WORD    level number
  7849.  
  7850. Bitfields for station flags:
  7851. Bit(s)    Description    (Table 3018)
  7852.  1    workstation
  7853.  2    superstation
  7854.  3    xgate
  7855.  4    active gate
  7856. --------N-6F0E-------------------------------
  7857. INT 6F - 10NET - SPOOL/PRINT
  7858.     AH = 0Eh
  7859.     DS:DX -> spool/print record (see #3020)
  7860. Return: CF clear if successful
  7861.     CF set on error
  7862.         AX = error code (see also #2989)
  7863.         17FFh device not mounted
  7864.         18FFh already spooling to named device
  7865.  
  7866. (Table 3019)
  7867. Values for 10NET spooler operation code:
  7868.  0000h    initiate spool
  7869.  0001h    abort print
  7870.  0002h    close spool
  7871.  0003h    delete spool
  7872.  0004h    print
  7873.  0005h    get report info
  7874.  0006h    set chat template
  7875.  0007h    queue
  7876.  0008h    return queue
  7877.  0009h    queue non-spooled file for printing
  7878.  
  7879. Format of 10NET Spool/Print record:
  7880. Offset    Size    Description    (Table 3020)
  7881.  00h    WORD    operation code (see #3019)
  7882.  02h 11 BYTEs    file name in FCB format
  7883. ---if operation code = 00h or 06h---
  7884.  0Dh    BYTE    notification flags (see #3021)
  7885.  0Eh    BYTE    days to keep (FFh=forever)
  7886.  0Fh    BYTE    bits 0,1: device (1=LPT1)
  7887.         bits 4-7: remote drive to store spool file (1=A,...)
  7888.  10h    WORD    length of following data area
  7889.  12h  N BYTEs    up to 64 bytes of description
  7890. ---if operation code = 03h---
  7891.  0Dh  8 BYTEs    user ID to associate with filename
  7892. ---if operation code = 04h---
  7893.  0Dh    WORD    block number
  7894.  0Fh  8 BYTEs    user ID to associate with filename
  7895. ---if operation code = 05h---
  7896.  0Dh    BYTE    RRN to start retrieve
  7897.  0Eh    BYTE    bits 0,1: local print device (LPTx)
  7898.         bit 3: if set, return entries for all users
  7899.  0Fh    WORD    length of following area
  7900.  11h  N BYTEs    up to 1500 bytes to receive $SCNTL records returned
  7901. ---if operation code = 07h---
  7902.  0Dh    BYTE    queue number
  7903.  0Eh    BYTE    bits 0,1: local print device (LPTx)
  7904.  0Fh    WORD    number of bytes of test print to be done
  7905.  11h    BYTE    code:
  7906.         01h print device
  7907.         02h test print count
  7908.         03h prn
  7909. ---if operation code = 08h---
  7910.  0Dh    BYTE    queue location or $SCNTL location to start access
  7911.         returns next item for access:
  7912.             00h-7Fh queued items
  7913.             80h-FEh non-queued, non-printed items
  7914.             FFh    no more items
  7915.  0Eh    WORD    unused
  7916.  10h    WORD    length of following area
  7917.  12h  N BYTEs    up to 64 bytes to receive $SCNTL records (see #3022)
  7918. ---if operation code = 09h---
  7919.  0Dh  3 BYTEs    unused
  7920.  10h  N BYTEs    path to non-spooled file to be queued for printing
  7921.  
  7922. Bitfields for notification flags:
  7923. Bit(s)    Description    (Table 3021)
  7924.  7    queue to top
  7925.  6    do ID page
  7926.  5    no form feed
  7927.  4    reserved
  7928.  3    explicit queuing only
  7929.  2    notify at print completion
  7930.  1    notify server operator, with reply
  7931.  0    notify at print start
  7932.  
  7933. Format of 10NET $SCNTL record:
  7934. Offset    Size    Description    (Table 3022)
  7935.  00h  8 BYTEs    user ID
  7936.  08h 11 BYTEs    filename in FCB format
  7937.  13h  6 BYTEs    node ID
  7938.  19h  3 BYTEs    creation date
  7939.  1Ch    BYTE    notification flags (see #3021)
  7940.  1Dh    BYTE    retention time in days
  7941.  1Eh    BYTE    printing device (LPTx)
  7942.  1Fh  3 BYTEs    date last printed (0 = never)
  7943.  22h    BYTE    device containing spoolfile
  7944.  23h    WORD    bytes to print for test print
  7945.  25h    WORD    block number to start print
  7946.  27h    BYTE    reserved
  7947. --------b-6F0E-------------------------------
  7948. INT 6F - HP Vectra EX-BIOS - "F_PUT_WORD" - WRITE WORD OF DATA TO DEVICE
  7949.     AH = 0Eh
  7950.     BP = driver ID (see #2990)
  7951.     DX = data word
  7952. Return: AH = status (see #2993 at AH=00h"HP Vectra")
  7953.     BP,DS destroyed
  7954. SeeAlso: AH=06h"F_PUT_BYTE",AH=0Ah"F_PUT_BUFFER",AH=10h"F_GET_WORD"
  7955. --------b-6F0E-------------------------------
  7956. INT 6F - HP Vectra EX-BIOS - "F_PUT_WORD" - WRITE A WORD OF DATA
  7957.     AH = 0Eh
  7958.     BP = driver ID (see #2990)
  7959.     ??? details not yet available
  7960. Return: ???
  7961. SeeAlso: AH=06h"HP Vectra",AH=0Ah"HP Vectra",AH=10h"HP Vectra"
  7962. --------b-6F0E--BP0012-----------------------
  7963. INT 6F - HP Vectra EX-BIOS - "F_INS_FIXGETDS" - INSTALL VALUES IN FIXED VECTOR
  7964.     AH = 0Eh
  7965.     BP = 0012h (driver ID for V_SYSTEM)
  7966.     BX = vector address used
  7967.     ES:DI -> new CS:IP entry point
  7968. Return: AH = status (00h) (see #2993)
  7969.     BP,DS destroyed
  7970. Note:    on installation, the given entry point will be invoked with an SF_INIT
  7971.       call (see AX=0200h"SF_INIT"), with the "last used DS" value in BX;
  7972.       the routine should adjust BX and return the new value.  If the
  7973.       SF_INIT call returns with error code FEh, the power-on self-test
  7974.       sequence will be called.
  7975. SeeAlso: AH=00h"HP Vectra",AH=04h/BP=0012h,AH=06h/BP=0012h,AH=0Ch/BP=0012h
  7976. SeeAlso: AH=10h/BP=0012h,AH=14h/BP=0012h
  7977. --------b-6F0E--BP005A-----------------------
  7978. INT 6F - HP Vectra EX-BIOS - "F_SET_LIMITS_Y" - SET VERTICAL TRACKING LIMITS
  7979.     AH = 0Eh
  7980.     BP = 005Ah (driver ID for V_STRACK)
  7981.     CX = minimum Y coordinate
  7982.     DX = maximum Y coordinate
  7983. Return: AH = status (see #2993)
  7984.     BP,DS destroyed
  7985. SeeAlso: AH=00h"HP Vectra",AH=04h/BP=005Ah,AH=08h/BP=005Ah,AH=0Ch/BP=005Ah
  7986. SeeAlso: AH=10h/BP=005Ah,AH=12h/BP=005Ah,INT 33/AX=0008h
  7987. --------N-6F0F-------------------------------
  7988. INT 6F - 10NET v5.0 - "RM LOCK" - ???
  7989.     AH = 0Fh
  7990.     ???
  7991. Return: ???
  7992. SeeAlso: AH=07h,AH=08h"10NET"
  7993. --------N-6F10-------------------------------
  7994. INT 6F - 10NET - ATTACH/DETACH PRINTER
  7995.     AH = 10h
  7996.     AL = subfunction
  7997.         00h initiate spooling if LPT1 is mounted
  7998.         01h terminate spooling if LPT1 is mounted
  7999. SeeAlso: INT 21/AX=5D08h
  8000. --------b-6F10-------------------------------
  8001. INT 6F - HP Vectra EX-BIOS - "F_GET_WORD" - READ WORD OF DATA FROM DEVICE
  8002.     AH = 10h
  8003.     BP = driver ID (see #2990)
  8004. Return: AH = status (see #2993 at AH=00h"HP Vectra")
  8005.     DX = data word
  8006.     BP,DS destroyed
  8007. SeeAlso: AH=08h"F_GET_BYTE",AH=0Ch"F_GET_BUFFER",AH=0Eh"F_PUT_WORD"
  8008. --------b-6F10--BP0012-----------------------
  8009. INT 6F - HP Vectra EX-BIOS - "F_INS_FIXGLBDS" - INSTALL VALUES IN FIXED VECTOR
  8010.     AH = 10h
  8011.     BP = 0012h (driver ID for V_SYSTEM)
  8012.     BX = vector address used
  8013.     ES:DI -> new CS:IP entry point
  8014. Return: AH = status (00h) (see #2993)
  8015.     BP,DS destroyed
  8016. Note:    on installation, the given entry point will be invoked with an SF_INIT
  8017.       call (see AX=0200h"SF_INIT"), with BX set to the EX-BIOS global
  8018.       data area. If the SF_INIT call returns with error code FEh, the
  8019.       power-on self-test sequence will be called.
  8020. SeeAlso: AH=00h"HP Vectra",AH=04h/BP=0012h,AH=06h/BP=0012h
  8021. SeeAlso: AH=0Ch/BP=0012h,AH=0Eh/BP=0012h,AH=12h/BP=0012h,AH=16h/BP=0012h
  8022. --------b-6F10--BP005A-----------------------
  8023. INT 6F - HP Vectra EX-BIOS - "F_PUT_SPRITE" - DISPLAY GRAPHICS CURSOR SPRITE
  8024.     AH = 10h
  8025.     BP = 005Ah (driver ID for V_STRACK)
  8026.     BX = X coordinate
  8027.     CX = Y coordinate
  8028. Return: AH = status (see #2993)
  8029.     BP,DS destroyed
  8030. SeeAlso: AH=00h"HP Vectra",AH=04h"F_TRACK_INIT",AH=08h"F_TRACK_OFF"
  8031. SeeAlso: AH=12h"F_REMOVE_SPRITE",INT 33/AX=0004h
  8032. --------N-6F11-------------------------------
  8033. INT 6F - 10NET - LOCK FCB
  8034.     AH = 11h
  8035.     AL = mode
  8036.         01h sequential
  8037.         02h random
  8038.         03h random block
  8039.         CX = number of records
  8040.     DS:DX -> FCB (see #0693 at INT 21/AH=0Fh)
  8041. Return: CF clear if successful
  8042.     CF set on error
  8043.         AX = error code (see also #2989)
  8044.         0002h file not found
  8045. SeeAlso: AH=12h,INT 21/AH=0Fh
  8046. --------N-6F12-------------------------------
  8047. INT 6F - 10NET - UNLOCK FCB
  8048.     AH = 12h
  8049.     AL = mode
  8050.         00h sequential
  8051.         01h random
  8052.         02h random block
  8053.         CX = number of records
  8054.     DS:DX -> FCB (see #0693 at INT 21/AH=0Fh)
  8055. Return: CF clear if successful
  8056.     CF set on error
  8057.         AX = error code (see also #2989)
  8058.         0002h file not found
  8059. SeeAlso: AH=11h
  8060. --------b-6F12--BP0012-----------------------
  8061. INT 6F - HP Vectra EX-BIOS - "F_INS_FREEOWNDS" - INSTALL VALUES IN FREE VECTOR
  8062.     AH = 12h
  8063.     BP = 0012h (driver ID for V_SYSTEM)
  8064.     ES:DI -> new CS:IP entry point
  8065. Return: AH = status (00h) (see #2993)
  8066.     BP,DS destroyed
  8067. Note:    on installation, the given entry point will be invoked with an SF_INIT
  8068.       call (see AX=0200h"SF_INIT"), which should return the routine's DS
  8069.       in BX.  If the SF_INIT call returns with error code FEh, the power-on
  8070.       self-test sequence will be called.
  8071. SeeAlso: AH=00h"HP Vectra",AH=04h/BP=0012h,AH=0Ch/BP=0012h,AH=14h/BP=0012h
  8072. SeeAlso: AH=16h/BP=0012h,AH=18h/BP=0012h
  8073. --------b-6F12--BP005A-----------------------
  8074. INT 6F - HP Vectra EX-BIOS - "F_REMOVE_SPRITE" - REMOVE GRAPHICS CURSOR SPRITE
  8075.     AH = 12h
  8076.     BP = 005Ah (driver ID for V_STRACK)
  8077. Return: AH = status (see #2993)
  8078.     BP,DS destroyed
  8079. SeeAlso: AH=00h"HP Vectra",AH=06h"F_TRACK_ON",AH=10h"F_PUT_SPRITE"
  8080. --------N-6F13-------------------------------
  8081. INT 6F - 10NET v3.3+ - GET REMOTE CONFIGURATION TABLE ADDRESS
  8082.     AH = 13h
  8083.     DS:DX -> node ID, 12 bytes blank-padded
  8084. Return: CF clear if successful
  8085.         ES:BX = configuration table address on given machine
  8086.     CF set on error
  8087.         AX = error code (see #2989)
  8088. SeeAlso: AH=03h
  8089. --------N-6F14-------------------------------
  8090. INT 6F - 10NET v3.3+ - GET REMOTE MEMORY
  8091.     AH = 14h
  8092.     BX:SI = address of remote memory
  8093.     CX = length (<=1024 bytes)
  8094.     DS:DX -> node ID, 12 bytes blank-padded
  8095.     DS:DI -> area to receive remote memory image
  8096. Return: CF clear if successful
  8097.         CX = amount of memory copied to DS:SI
  8098.     CF set on error
  8099.         AX = error code (see #2989)
  8100. --------b-6F14--BP0012-----------------------
  8101. INT 6F - HP Vectra EX-BIOS - "F_INS_FREEGETDS" - INSTALL VALUES IN FREE VECTOR
  8102.     AH = 14h
  8103.     BP = 0012h (driver ID for V_SYSTEM)
  8104.     ES:DI -> new CS:IP entry point
  8105. Return: AH = status (00h) (see #2993)
  8106.     BP,DS destroyed
  8107. Note:    on installation, the given entry point will be invoked with an SF_INIT
  8108.       call (see AX=0200h"SF_INIT"), with the "last used DS" value in BX;
  8109.       the routine should adjust BX and return the new value.  If the
  8110.       SF_INIT call returns with error code FEh, the power-on self-test
  8111.       sequence will be called.
  8112. SeeAlso: AH=00h"HP Vectra",AH=04h/BP=0012h,AH=0Eh/BP=0012h,AH=12h/BP=0012h
  8113. SeeAlso: AH=16h/BP=0012h
  8114. --------N-6F1501-----------------------------
  8115. INT 6F - 10NET v3.3+ - GET SHARED DEVICE ENTRY
  8116.     AX = 1501h
  8117.     BX = zero-based index
  8118.     DS:SI -> node ID, 12 bytes blank-padded
  8119.     ES:DI -> 85-byte buffer for shared device table entry (see #3023)
  8120. Return: CF clear if successful
  8121.         ES:DI buffer contains shared device table entry of BXth device
  8122.     CF set on error
  8123.         AX = error code (see #2989)
  8124. SeeAlso: AX=1502h,AX=1503h,AX=9501h
  8125.  
  8126. Format of 10NET shared device table entry:
  8127. Offset    Size    Description    (Table 3023)
  8128.  00h  8 BYTEs    device
  8129.  08h  8 BYTEs    alias
  8130.  10h 64 BYTEs    path
  8131.  50h  8 BYTEs    password
  8132.  58h    BYTE    access
  8133.  59h  4 BYTEs    mask
  8134. --------N-6F1502-----------------------------
  8135. INT 6F - 10NET v3.3+ - SET SHARED DEVICE ENTRY
  8136.     AX = 1502h
  8137.     DS:SI -> node ID, 12 bytes blank-padded
  8138.     ES:DI -> valid shared device table entry
  8139. Return: CF clear if successful
  8140.     CF set on error
  8141.         AX = error code (see #2989)
  8142. SeeAlso: AX=1501h,AX=1503h,AX=9502h
  8143. --------N-6F1503-----------------------------
  8144. INT 6F - 10NET v3.3+ - DELETE SHARED DEVICE ENTRY
  8145.     AX = 1503h
  8146.     BX = zero-based index
  8147.     DS:SI -> node ID, 12 bytes blank-padded
  8148. Return: CF clear if successful
  8149.     CF set on error
  8150.         AX = error code (see #2989)
  8151. SeeAlso: AX=1501h,AX=1502h,AX=9503h
  8152. --------N-6F16-------------------------------
  8153. INT 6F - 10NET v5.0 - "GL WHO" - ???
  8154.     AH = 16h
  8155.     ???
  8156. Return: ???
  8157. SeeAlso: AH=0Dh
  8158. --------b-6F16--BP0012-----------------------
  8159. INT 6F - HP Vectra EX-BIOS - "F_INS_FREEGLBDS" - INSTALL VALUES IN FREE VECTOR
  8160.     AH = 16h
  8161.     BP = 0012h (driver ID for V_SYSTEM)
  8162.     ES:DI -> new CS:IP entry point
  8163. Return: AH = status (00h) (see #2993 at INT 6F/AH=00h"HP Vectra")
  8164.     BP,DS destroyed
  8165. Note:    on installation, the given entry point will be invoked with an SF_INIT
  8166.       call (see AX=0200h"SF_INIT"), with BX set to the EX-BIOS global
  8167.       data area.  If the SF_INIT call returns with error code FEh, the
  8168.       power-on self-test sequence will be called.
  8169. SeeAlso: AH=00h"HP Vectra",AH=04h/BP=0012h,AH=10h/BP=0012h,AH=12h/BP=0012h
  8170. SeeAlso: AH=14h/BP=0012h,AH=18h/BP=0012h
  8171. --------N-6F17-------------------------------
  8172. INT 6F - 10NET v3.3+ - MOUNT
  8173.     AH = 17h
  8174.     AL = local drive number (0=A:)
  8175.     BL = remote drive letter or '1'..'3' for LPTn or '4' or '5' for COMx
  8176.     DS:DX -> node ID, 12 bytes blank-padded
  8177. Return: CF clear if successful
  8178.     CF set on error
  8179.         AX = error code (see #2989)
  8180. SeeAlso: AH=18h
  8181. --------N-6F18-------------------------------
  8182. INT 6F - 10NET v3.3+ - UNMOUNT
  8183.     AH = 18h
  8184.     AL = local drive number (0=A:)
  8185.     BL = type
  8186.         00h        disk
  8187.         01h-03h LPTn
  8188.         04h,05h COMx
  8189. Return: CF clear if successful
  8190.     CF set on error
  8191.         AX = error code (see #2989)
  8192. SeeAlso: AH=17h
  8193. --------b-6F18--BP0012-----------------------
  8194. INT 6F - HP Vectra EX-BIOS - "F_INS_FIND" - FIND DRIVER BY ATTRIBUTES
  8195.     AH = 18h
  8196.     BP = 0012h (driver ID for V_SYSTEM)
  8197.     AL = sense of test (00h equal, 02h non-equal)
  8198.     BX = AND mask
  8199.     DX = pattern
  8200.     SI = first vector address to search
  8201.     DI = offset in HP header of field to test
  8202. Return: AH = status (00h,FEh) (see #2993 at INT 6F/AH=00h"HP Vectra")
  8203.     BP,DS destroyed
  8204.     ---if AH=00h---
  8205.     SI = first matching vector address
  8206. Desc:    compare successive drivers' header fields starting at address SI
  8207.       until the header field AND BX is either equal or non-equal to DX
  8208. SeeAlso: AH=00h"HP Vectra",AH=04h/BP=0012h,AH=0Ch/BP=0012h,AH=10h/BP=0012h
  8209. SeeAlso: AH=12h/BP=0012h,AH=16h/BP=0012h
  8210. --------N-6F19-------------------------------
  8211. INT 6F U - 10NET v5.0 - AUDIT
  8212.     AH = 19h
  8213.     ???
  8214. Return: ???
  8215. SeeAlso: AH=99h
  8216. --------N-6F1A-------------------------------
  8217. INT 6F U - 10NET v5.0 - "BULL" - ???
  8218.     AH = 1Ah
  8219.     ???
  8220. Return: ???
  8221. --------N-6F1B-------------------------------
  8222. INT 6F U - 10NET v5.0 - "GMOUNT" - ???
  8223.     AH = 1Bh
  8224.     ???
  8225. Return: ???
  8226. --------N-6F1C-------------------------------
  8227. INT 6F U - 10NET v5.0 - "GLOGIN" - GET LOGIN LIST
  8228.     AH = 1Ch
  8229.     ???
  8230. Return: ???
  8231. --------N-6F1D-------------------------------
  8232. INT 6F U - 10NET v5.0 - "TABDATA" - ???
  8233.     AH = 1Dh
  8234.     ???
  8235. Return: ???
  8236. --------N-6F1E-------------------------------
  8237. INT 6F U - 10NET v5.0 - "SCHED" - ???
  8238.     AH = 1Eh
  8239.     ???
  8240. Return: ???
  8241. --------b-6F1E--BP0012-----------------------
  8242. INT 6F - HP Vectra EX-BIOS - "F_RAM_GET" - GET EX-BIOS FREE RAM AREA
  8243.     AH = 1Eh
  8244.     BP = 0012h (driver ID for V_SYSTEM)
  8245. Return: AH = status (00h) (see #2993 at INT 6F/AH=00h"HP Vectra")
  8246.     BX = last-used DS
  8247.     DX = maximum DS
  8248.     BP,DS destroyed
  8249. SeeAlso: AH=00h"HP Vectra",AH=04h/BP=0012h,AH=20h/BP=0012h,AH=22h/BP=0012h
  8250. --------N-6F1F-------------------------------
  8251. INT 6F U - 10NET v5.0 - "WHOAMI" - ???
  8252.     AH = 1Fh
  8253.     ???
  8254. Return: ???
  8255. --------N-6F20-------------------------------
  8256. INT 6F U - 10NET v5.0 - ???
  8257.     AH = 20h
  8258.     ???
  8259. Return: ???
  8260. --------b-6F20--BP0012-----------------------
  8261. INT 6F - HP Vectra EX-BIOS - "F_RAM_RET" - RESERVE EX-BIOS MEMORY
  8262.     AH = 20h
  8263.     BP = 0012h (driver ID for V_SYSTEM)
  8264.     BX = new value for "last-used DS"
  8265.     DX = new value for "maximum DS"
  8266. Return: AH = status (00h) (see #2993 at INT 6F/AH=00h"HP Vectra")
  8267.     BP,DS destroyed
  8268. Note:    the F_INS_FIXGETDS and F_INS_FREEGETDS functions
  8269.       (see AH=0Eh/BP=0012h,AH=14h/BP=0012h) also modify the values returned
  8270.       by this call, requiring care if both methods are used to allocate
  8271.       memory
  8272. SeeAlso: AH=00h"HP Vectra",AH=0Eh/BP=0012h,AH=14h/BP=0012h,AH=1Eh/BP=0012h
  8273. --------N-6F21-------------------------------
  8274. INT 6F U - 10NET v5.0 - ???
  8275.     AH = 21h
  8276.     ???
  8277. Return: ???
  8278. --------N-6F22-------------------------------
  8279. INT 6F U - 10NET v5.0 - ???
  8280.     AH = 22h
  8281.     ???
  8282. Return: ???
  8283. --------b-6F22--BP0012-----------------------
  8284. INT 6F - HP Vectra EX-BIOS - "F_CMOS_GET" - READ CMOS MEMORY
  8285.     AH = 22h
  8286.     BP = 0012h (driver ID of V_SYSTEM)
  8287.     BL = address of CMOS byte to read
  8288. Return: AH = status (see #2993 at AH=00h"HP Vectra")
  8289.     AL = byte read
  8290.     BP,DS destroyed
  8291. Note:    supported by ES, QS, and RS series HP Vectras
  8292. SeeAlso: AH=00h"HP Vectra",AH=1Eh/BP=0012h,AH=24h/BP=0012h
  8293. --------b-6F24--BP0012-----------------------
  8294. INT 6F - HP Vectra EX-BIOS - "F_CMOS_RET" - WRITE CMOS MEMORY
  8295.     AH = 24h
  8296.     BP = 0012h (driver ID of V_SYSTEM)
  8297.     BL = address of CMOS byte to write
  8298.     AL = new value
  8299. Return: AH = status (see #2993)
  8300.     BP,DS destroyed
  8301. Note:    updates the CMOS checksum fields (both IBM-standard and HP checksums)
  8302. SeeAlso: AH=00h"HP Vectra",AH=22h/BP=0012h
  8303. --------b-6F2A--BP0012-----------------------
  8304. INT 6F - HP Vectra EX-BIOS - "F_YIELD" - GIVE UP CPU TO OTHER TASKS
  8305.     AH = 2Ah
  8306.     BP = 0012h (driver ID of V_SYSTEM)
  8307. Return: AH = status (see #2993)
  8308.     BP,DS destroyed
  8309. Note:    this is a hook for multitasking systems
  8310. SeeAlso: AH=00h"HP Vectra",INT 15/AX=1000h,INT 2F/AX=1680h
  8311. --------b-6F30--BP0012-----------------------
  8312. INT 6F - HP Vectra EX-BIOS - "F_SND_CLICK_ENABLE" - TURN ON KEYCLICKS
  8313.     AH = 30h
  8314.     BP = 0012h (driver ID of V_SYSTEM)
  8315. Return: AH = status (see #2993 at AH=00h"HP Vectra")
  8316.     BP,DS destroyed
  8317. Desc:    enables keyclicks and flushes any pending keyclicks
  8318. SeeAlso: AH=32h/BP=0012h,AH=34h/BP=0012h,AH=36h/BP=0012h
  8319. --------b-6F32--BP0012-----------------------
  8320. INT 6F - HP Vectra EX-BIOS - "F_SND_CLICK_DISABLE" - TURN OFF KEYCLICKS
  8321.     AH = 32h
  8322.     BP = 0012h (driver ID of V_SYSTEM)
  8323. Return: AH = status (see #2993)
  8324.     BP,DS destroyed
  8325. Desc:    disables keyclicks and flushes any pending keyclicks
  8326. SeeAlso: AH=00h"HP Vectra",AH=30h/BP=0012h,AH=38h/BP=0012h
  8327. --------b-6F34--BP0012-----------------------
  8328. INT 6F - HP Vectra EX-BIOS - "F_SND_CLICK" - GENERATE KEYCLICK
  8329.     AH = 34h
  8330.     BP = 0012h (driver ID of V_SYSTEM)
  8331. Return: AH = status (see #2993)
  8332.     BP,DS destroyed
  8333. Desc:    generate a keyclick if fewer than four clicks are already pending
  8334. Note:    if keyclicks are already pending, the remaining click count is
  8335.       incremented and the function returns immediately
  8336. SeeAlso: AH=00h"HP Vectra",AH=30h/BP=0012h,AH=36h/BP=0012h,AH=3Ah/BP=0012h
  8337. --------b-6F36--BP0012-----------------------
  8338. INT 6F - HP Vectra EX-BIOS - "F_SND_BEEP_ENABLE" - ENABLE BEEPS
  8339.     AH = 36h
  8340.     BP = 0012h (driver ID of V_SYSTEM)
  8341. Return: AH = status (see #2993 at AH=00h"HP Vectra")
  8342.     BP,DS destroyed
  8343. SeeAlso: AH=00h"HP Vectra",AH=30h/BP=0012h,AH=34h/BP=0012h,AH=38h/BP=0012h
  8344. --------b-6F38--BP0012-----------------------
  8345. INT 6F - HP Vectra EX-BIOS - "F_SND_BEEP_DISABLE" - DISABLE BEEPS
  8346.     AH = 38h
  8347.     BP = 0012h (driver ID of V_SYSTEM)
  8348. Return: AH = status (see #2993)
  8349.     BP,DS destroyed
  8350. SeeAlso: AH=00h"HP Vectra",AH=32h/BP=0012h,AH=36h/BP=0012h
  8351. --------b-6F3A--BP0012-----------------------
  8352. INT 6F - HP Vectra EX-BIOS - "F_SND_BEEP" - SOUND BEEP WITH CURRENT VALUES
  8353.     AH = 3Ah
  8354.     BP = 0012h (driver ID of V_SYSTEM)
  8355. Return: AH = status (see #2993 at AH=00h"HP Vectra")
  8356.     BP,DS destroyed
  8357. Desc:    make a sound of the frequency and duration defined in the EX-BIOS
  8358.       global data area (see #2997)
  8359. SeeAlso: AH=00h"HP Vectra",AH=34h/BP=0012h,AH=36h/BP=0012h,AH=38h/BP=0012h
  8360. SeeAlso: AH=3Ch/BP=0012h,AH=3Eh/BP=0012h
  8361. --------b-6F3C--BP0012-----------------------
  8362. INT 6F - HP Vectra EX-BIOS - "F_SND_SET_BEEP" - SET BEEP FREQUENCY AND DURATION
  8363.     AH = 3Ch
  8364.     BP = 0012h (driver ID of V_SYSTEM)
  8365.     BX = frequency in Hz (1-25000, 0 = off)
  8366.     DX = duration in 10-microsecond increments
  8367. Return: AH = status (see #2993)
  8368.     BP,DS destroyed
  8369. SeeAlso: AH=00h"HP Vectra",AH=3Ah/BP=0012h,AH=3Eh/BP=0012h,#2997
  8370. --------b-6F3E--BP0012-----------------------
  8371. INT 6F - HP Vectra EX-BIOS - "F_SND_TONE" - SOUND TONE WITH FREQ AND DURATION
  8372.     AH = 3Eh
  8373.     BP = 0012h (driver ID of V_SYSTEM)
  8374.     BX = frequency in Hz (1-25000, 0 = off)
  8375.     DX = duration in 10-microsecond increments
  8376. Return: AH = status (see #2993)
  8377.     BP,DS destroyed
  8378. SeeAlso: AH=00h"HP Vectra",AH=3Ah/BP=0012h,AH=3Ch/BP=0012h,AH=40h/BP=0012h
  8379. --------b-6F40--BP0012-----------------------
  8380. INT 6F - HP Vectra EX-BIOS - "F_STR_GET_FREE_INDEX" - FIND FREE STRING INDEX
  8381.     AH = 40h
  8382.     BP = 0012h (driver ID of V_SYSTEM)
  8383. Return: AH = status (see #2993)
  8384.     BX = next free string index
  8385.     BP,DS destroyed
  8386. Desc:    get the next string index available to user programs
  8387. SeeAlso: AH=00h"HP Vectra",AH=42h/BP=0012h,AH=44h/BP=0012h,AH=46h/BP=0012h
  8388. --------b-6F42--BP0012-----------------------
  8389. INT 6F - HP Vectra EX-BIOS - "F_STR_DEL_BUCKET" - DEL HEADER FROM BUCKET LIST
  8390.     AH = 42h
  8391.     BP = 0012h (driver ID of V_SYSTEM)
  8392.     ES:DI -> bucket header (see #3024)
  8393. Return: AH = status (00h,FEh) (see #2993 at AH=00h"HP Vectra")
  8394.     BP,DS destroyed
  8395. SeeAlso: AH=00h"HP Vectra",AH=40h/BP=0012h,AH=44h/BP=0012h
  8396.  
  8397. Format of HP Vectra EX-BIOS bucket header:
  8398. Offset    Size    Description    (Table 3024)
  8399.  00h    DWORD    pointer to next bucket header (FFFFh:FFFFh if last)
  8400.  04h    WORD    upper bound on string index
  8401.  06h    WORD    lower bound on string index
  8402.  08h    DWORD    pointer to array of string offset pointers
  8403.  0Ch    WORD    segment of strings
  8404. Note:    the strings pointed at by the offset pointers are byte-counted ASCIZ
  8405.       strings
  8406. --------b-6F44--BP0012-----------------------
  8407. INT 6F - HP Vectra EX-BIOS - "F_STR_PUT_BUCKET" - ADD HEADER TO BUCKET HDR LIST
  8408.     AH = 44h
  8409.     BP = 0012h (driver ID of V_SYSTEM)
  8410.     ES:DI -> bucket header (see #3024)
  8411. Return: AH = status (00h) (see #2993)
  8412.     BP,DS destroyed
  8413. SeeAlso: AH=00h"HP Vectra",AH=42h/BP=0012h,AH=46h/BP=0012h
  8414. --------b-6F46--BP0012-----------------------
  8415. INT 6F - HP Vectra EX-BIOS - "F_STR_GET_STRING" - FIND STRING IN BUCKET LIST
  8416.     AH = 46h
  8417.     BP = 0012h (driver ID of V_SYSTEM)
  8418.     BX = string index
  8419. Return: AH = status (00h,other) (see #2993)
  8420.     BP,DS destroyed
  8421.     ---if successful---
  8422.     CX = length of string (excluding count byte and terminating NUL)
  8423.     DS:SI -> header for string
  8424.     ES:DI -> found string
  8425. SeeAlso: AH=00h"HP Vectra",AH=44h/BP=0012h,AH=48h/BP=0012h
  8426. --------b-6F48--BP0012-----------------------
  8427. INT 6F - HP Vectra EX-BIOS - "F_STR_GET_INDEX" - GET INDEX FOR STRING
  8428.     AH = 48h
  8429.     BP = 0012h (driver ID of V_SYSTEM)
  8430.     ES:DI -> ASCIZ string
  8431. Return: AH = status (00h,other) (see #2993 at AH=00h"HP Vectra")
  8432.     BP,DS destroyed
  8433.     ---if successful---
  8434.     BX = index for the given string
  8435. SeeAlso: AH=00h"HP Vectra",AH=40h/BP=0012h,AH=46h/BP=0012h
  8436. --------A-6F636FBX6D70-----------------------
  8437. INT 6F - Clara Empricost - TSR Version - INSTALLATION CHECK
  8438.     AX = 636Fh ('co')
  8439.     BX = 6D70h ('mp')
  8440.     CX = 696Eh ('in')
  8441.     SS:DX -> WORD to set if installed
  8442. Return: SS:DX word set to 636Fh if installed
  8443. Program: Condition List Action Rejection Algorithm for the Evaluation
  8444.       of Music at Pseudo-Random Idea COnstruction STage
  8445.       (CLARA EMPRICOST) is an experimental program by Silas Brown
  8446. SeeAlso: AX=636Fh/BX=6D70h"UNINSTALL"
  8447. --------A-6F636FBX6D70-----------------------
  8448. INT 6F - Clara Empricost - TSR Version - UNINSTALL
  8449.     AX = 636Fh ('co')
  8450.     BX = 6D70h ('mp')
  8451.     CX = 6F73h ('os')
  8452. Return: nothing -- call installation check to determine whether successful
  8453. Program: Condition List Action Rejection Algorithm for the Evaluation
  8454.       of Music at Pseudo-Random Idea COnstruction STage
  8455.       (CLARA EMPRICOST) is an experimental program by Silas Brown
  8456. Notes:     Saves any unfinished task and prevents processing of
  8457.        new tasks, even if can't uninstall
  8458.      If INT 28h or INT 6Fh have been chained since installation,
  8459.        returns without changing interrupts or freeing memory
  8460.      do not call while DOS is active (i.e. InDOS flag is nonzero or INT 28
  8461.        is active and InDOS > 1)
  8462. SeeAlso: AX=636Fh/BX=6D70h"INSTALLATION CHECK"
  8463. --------N-6F80-------------------------------
  8464. INT 6F - 10NET v5.0 - LOGIN
  8465.     AH = 80h
  8466.     DS:DX -> login record (see #3025)
  8467. Return: CF clear if successful
  8468.         BL = number of days until password expires (00h = never)
  8469.         CL = security level
  8470.     CF set on error
  8471.         AX = status (see #2989)
  8472. SeeAlso: AH=00h,AH=81h
  8473.  
  8474. Format of 10NET login record:
  8475. Offset    Size    Description    (Table 3025)
  8476.  00h  8 BYTEs    user name
  8477.  08h  8 BYTEs    password
  8478.  10h 15 BYTEs    server node ID
  8479.  1Fh  8 BYTEs    new password
  8480.  27h    BYTE    invoke mode (00h command line, 01h interactive)
  8481. --------N-6F81-------------------------------
  8482. INT 6F - 10NET v5.0 - LOGOUT
  8483.     AH = 81h
  8484.     DS:DX -> server node ID (DX=0000h for universal logout)
  8485. Return: AX = status (see #2989)
  8486. SeeAlso: AH=01h,AH=80h
  8487. --------N-6F8A-------------------------------
  8488. INT 6F - 10NET v5.0 - CHAT
  8489.     AH = 8Ah
  8490.     DS:BX -> chat parameters (see #3026)
  8491.     DS:DX -> chat message (see #3027)
  8492. Return: CF clear if successful
  8493.     CF set on error
  8494.         AX = status (see #2989)
  8495. SeeAlso: AH=0Ah"10NET"
  8496.  
  8497. Format of 10NET chat parameters:
  8498. Offset    Size    Description    (Table 3026)
  8499.  00h  8 BYTEs    sender's user name
  8500.  08h  8 BYTEs    destination user name
  8501.  10h 15 BYTEs    destination node (0 if broadcast-style chat)
  8502.  
  8503. Format of 10NET chat message:
  8504. Offset    Size    Description    (Table 3027)
  8505.  00h    WORD    message length
  8506.  02h  N BYTEs    chat message contents
  8507. --------N-6F8D-------------------------------
  8508. INT 6F - 10NET v5.0 - "WHO" - ENUMERATE USERS ON NETWORK
  8509.     AH = 8Dh
  8510.     BX = service mask (see #3028)
  8511.     CX = length of buffer
  8512.     DS:DX -> buffer for array of Who data structures (see #3029)
  8513. Return: CF clear if successful
  8514.         CX = number of nodes matching service mask
  8515.         DS:DX buffer filled
  8516.     CF set on error
  8517.         AX = status (see #2989)
  8518. SeeAlso: AH=0Dh
  8519.  
  8520. Bitfields for 10NET service mask:
  8521. Bit(s)    Description    (Table 3028)
  8522.  0    workstation
  8523.  1    file server
  8524.  2    print server
  8525.  3    de-spool server
  8526.  
  8527. Format of 10NET Who data structure:
  8528. Offset    Size    Description    (Table 3029)
  8529.  00h  8 BYTEs    user name
  8530.  08h 15 BYTEs    node ID
  8531.  17h  3 BYTEs    unique portion of Ethernet address
  8532.  1Ah    BYTE    Who group number
  8533.  1Bh    WORD    service mask (see #3028)
  8534.  1Dh    DWORD    serial number
  8535.  21h    BYTE    maximum concurrent users with same serial number allowed on net
  8536.  22h    BYTE    chat mask (see #3030)
  8537.  23h    BYTE    internal system bits (see #3031)
  8538.  24h  9 BYTEs    version number in format MM.mm.xxx
  8539.  2Dh    BYTE    number of shared directories
  8540.  2Eh    BYTE    number of shared printer queues
  8541.  
  8542. Bitfields for 10NET chat mask:
  8543. Bit(s)    Description    (Table 3030)
  8544.  0    chat permitted
  8545.  1    bell enabled
  8546.  2    chat keyboard initiated
  8547.  3    in INT 16 handler
  8548.  4    in Get Input
  8549.  5    display has timed out
  8550.  6    chat is idle
  8551.  
  8552. Bitfields for 10NET internal system bits:
  8553. Bit(s)    Description    (Table 3031)
  8554.  0    submit permitted
  8555.  1    submit initiated
  8556.  2    submit executing
  8557.  3    internal client call/chat/spool/autospool
  8558.  4    in spool termination
  8559.  5    print permitted
  8560.  6    waiting for keyboard input
  8561. --------N-6F9501-----------------------------
  8562. INT 6F - 10NET v5.0 - GET SHARED DEVICE ENTRY
  8563.     AX = 9501h
  8564.     BX = zero-based index
  8565.     DS:SI -> server's node ID
  8566.     ES:DI -> buffer for shared device structure (see #3032)
  8567. Return: CF clear if successful
  8568.     CF set on error
  8569.         AX = status (see #2989)
  8570. SeeAlso: AX=1501h,AX=9502h,AX=9503h,AX=9504h
  8571.  
  8572. Format of 10NET shared device structure:
  8573. Offset    Size    Description    (Table 3032)
  8574.  00h  8 BYTEs    alias
  8575.  08h    BYTE    type (02h modem, 03h print queue, 04h directory)
  8576.  09h    BYTE    access rights
  8577.         bit 0: read
  8578.         bit 1: write
  8579.         bit 2: create
  8580.  0Ah  8 BYTEs    password
  8581.  12h 32 BYTEs    comment
  8582. ---directory---
  8583.  32h 64 BYTEs    pathname of shared directory
  8584. ---print queue---
  8585.  32h    BYTE    notification bit mask (see #3033)
  8586.  33h    BYTE    job control bit mask (see #3034)
  8587.  34h    WORD    number of days to retain file
  8588.  36h    WORD    test print length
  8589.  38h    BYTE    number of copies to print
  8590.  39h    BYTE    compression algorithm
  8591.  3Ah    BYTE    tab width (00h = don't expand)
  8592.  3Bh    BYTE    priority
  8593.  3Ch    WORD    time to open queue (FFFFh = always)
  8594.  3Eh    WORD    time to close queue
  8595.  40h    WORD    pause following queue switch, in clock ticks
  8596.  42h    WORD    pause between print jobs, in clock ticks
  8597.  44h    BYTE    associate queue file existence mask
  8598.         bit 0: queue switch file exists
  8599.         bit 1: initiate file exists
  8600.         bit 2: abort file exists
  8601.  45h  6 BYTEs    character sequence for page eject
  8602.  4Bh    BYTE    status of print queue
  8603.         bit 0: queue is closed
  8604.  4Ch    WORD    number of jobs on queue
  8605.  4Eh    WORD    offset of next print job to be dispatched (FFFFh = none)
  8606.  50h    BYTE    number of print devices in printer pool
  8607.  51h    WORD    offset of first print device structure (FFFFh if empty)
  8608.  
  8609. Bitfields for notification flags:
  8610. Bit(s)    Description    (Table 3033)
  8611.  0    user at print start
  8612.  1    operator at start, with reply
  8613.  2    user at print completion
  8614.  3    operator at completion, with reply
  8615.  4    user on queue switch
  8616.  5    operator on queue switch, with reply
  8617.  6    user on print error
  8618.  
  8619. Bitfields for 10NET job control mask:
  8620. Bit(s)    Description    (Table 3034)
  8621.  0    print banner page
  8622.  1    eject page at end of job
  8623.  2    mark as "held" (queue but don't print)
  8624.  3    rush job (queue at top)
  8625.  4    overwrite file with zeros before deletion
  8626.  5    hyperspool if possible
  8627. --------N-6F9502-----------------------------
  8628. INT 6F - 10NET v5.0 - SET SHARED DEVICE ENTRY
  8629.     AX = 9502h
  8630.     DS:SI -> server's node ID
  8631.     ES:DI -> shared device structure (see #3032)
  8632. Return: CF clear if successful
  8633.     CF set on error
  8634.         AX = status (see #2989)
  8635. SeeAlso: AX=1502h,AX=9501h,AX=9503h,AX=9504h
  8636. --------N-6F9503-----------------------------
  8637. INT 6F - 10NET v5.0 - DELETE SHARED DEVICE
  8638.     AX = 9503h
  8639.     BX = zero-based index
  8640.     DS:SI -> server's node ID
  8641. Return: CF clear if successful
  8642.     CF set on error
  8643.         AX = status (see #2989)
  8644. SeeAlso: AX=1503h,AX=9501h,AX=9502h,AX=9504h
  8645. --------N-6F9504-----------------------------
  8646. INT 6F - 10NET v5.0 - ENUMERATE USERS OF SHARED DEVICE
  8647.     AX = 9504h
  8648.     BX = zero-based shared device index
  8649.     CX = zero-based user index
  8650.     DS:SI -> server's node ID
  8651. Return: CF clear if successful
  8652.         ES:DI -> node ID of the CX'th user of the BX'th device
  8653.     CF set on error
  8654.         AX = status (see #2989)
  8655. SeeAlso: AX=9501h,AX=9502h,AX=9503h
  8656. --------N-6F99-------------------------------
  8657. INT 6F - 10NET v5.0 - AUDIT
  8658.     AH = 99h
  8659.     DS:SI -> server's node ID
  8660.     ES:DI -> data to be appended to audit trail file (max 106 bytes)
  8661. Return: CF clear if successful
  8662.     CF set on error
  8663.         AX = status (see #2989)
  8664. SeeAlso: AH=19h,AH=9Ch
  8665. --------N-6F9C-------------------------------
  8666. INT 6F - 10NET v5.0 - GET LOGIN LIST
  8667.     AH = 9Ch
  8668.     BX = zero-based index
  8669. Return: CF clear if successful
  8670.         DS:DI -> BX'th node ID that caller's machine is logged into
  8671.     CF set on error
  8672.         AX = status (see #2989)
  8673. --------H-70---------------------------------
  8674. INT 70 C - IRQ8 - CMOS REAL-TIME CLOCK
  8675. Desc:    this interrupt is called when the real-time clock chip generates an
  8676.       alarm or periodic interrupt, among others.  The periodic interrupt
  8677.       occurs 1024 times per second.
  8678. Notes:    many BIOSes turn off the periodic interrupt in the INT 70h handler
  8679.       unless in an event wait (see INT 15/AH=83h,INT 15/AH=86h).
  8680.     may be masked by setting bit 0 on I/O port A1h
  8681. SeeAlso: INT 08,INT 0F"HP 95LX",INT 15/AH=01h"Amstrad",INT 15/AH=83h
  8682. SeeAlso: INT 15/AH=86h,INT 1A/AH=02h,INT 58"DESQview",MEM FEE00320h
  8683. --------v-70---------------------------------
  8684. INT 70 - VIRUS - "Stupid" - ORIGINAL INT 21h VECTOR
  8685. Note:    the virus sets this interrupt to be the same as INT 21, and then
  8686.       performs only INT 70 calls; since INT 70 is also generated by the
  8687.       real-time clock on the PC/AT and higher, this could cause random
  8688.       actions on an infected system
  8689. SeeAlso: INT 6B"VIRUS",INT 9E"VIRUS",INT E0"VIRUS"
  8690. --------H-71---------------------------------
  8691. INT 71 C - IRQ9 - REDIRECTED TO INT 0A BY BIOS
  8692. Notes:    may be masked by setting bit 1 on I/O port A1h
  8693.     the default BIOS handler invokes INT 0A for compatibility, since the
  8694.       pin for IRQ2 on the PC expansion bus became the pin for IRQ9 on the
  8695.       AT expansion bus.
  8696.     under DESQview, only the INT 15h vector and BASIC segment address (the
  8697.       word at 0000h:0510h) may be assumed to be valid for the handler's
  8698.       process
  8699. SeeAlso: INT 0A"IRQ2",INT 59"IRQ9"
  8700. --------H-72---------------------------------
  8701. INT 72 C - IRQ10 - RESERVED
  8702. Note:    may be masked by setting bit 2 on I/O port A1h
  8703. SeeAlso: INT 5A"IRQ10"
  8704. --------H-73---------------------------------
  8705. INT 73 C - IRQ11 - RESERVED
  8706. Note:    may be masked by setting bit 3 on I/O port A1h
  8707. SeeAlso: INT 5B"IRQ11"
  8708. --------H-74---------------------------------
  8709. INT 74 C - IRQ12 - POINTING DEVICE (PS)
  8710. Notes:    may be masked by setting bit 4 on I/O port A1h
  8711.     under DESQview, only the INT 15h vector and BASIC segment address (the
  8712.       word at 0000h:0510h) may be assumed to be valid for the handler's
  8713.       process
  8714. SeeAlso: INT 33/AX=0000h,INT 33/AX=0024h,INT 5C"NetBIOS"
  8715. --------H-75---------------------------------
  8716. INT 75 C - IRQ13 - MATH COPROCESSOR EXCEPTION (AT and up)
  8717. Desc:    redirected to INT 02 by the BIOS, for compatibility with the PC
  8718. Notes:    may be masked by setting bit 5 on I/O port A1h
  8719.     not all clones wire the coprocessor to generate this IRQ; some systems
  8720.       generate an NMI (see INT 02) or assert the -ERROR pin on the CPU
  8721.       (see INT 10"COPROCESSOR")
  8722.     under DESQview, only the INT 15h vector and BASIC segment address (the
  8723.       word at 0000h:0510h) may be assumed to be valid for the handler's
  8724.       process
  8725. SeeAlso: INT 10"COPROCESSOR",INT 5D"IRQ13"
  8726. --------H-76---------------------------------
  8727. INT 76 C - IRQ14 - HARD DISK CONTROLLER OPERATION COMPLETE (AT and later)
  8728. Notes:    may be masked by setting bit 6 on I/O port A1h
  8729.     on the PS/2, this interrupt is designed to be shared with other
  8730.       devices that produce an operation-complete interrupt, though
  8731.       the only current user is the hard disk
  8732. SeeAlso: INT 0E"IRQ6",INT 15/AH=91h,INT 5E"IRQ14"
  8733. --------H-77---------------------------------
  8734. INT 77 C - IRQ15 - RESERVED (AT,PS)
  8735. Note:    may be masked by setting bit 7 on I/O port A1h
  8736. SeeAlso: INT 5F"IRQ15"
  8737. --------H-77---------------------------------
  8738. INT 77 C - IRQ15 - POWER CONSERVATION (Compaq SLT/286)
  8739. Note:    may be masked by setting bit 7 on I/O port A1h
  8740. SeeAlso: INT 15/AX=4600h,INT 5F"IRQ15"
  8741. --------E-78---------------------------------
  8742. INT 78 - UofSalford DBOS DOS extender - API
  8743.     AH = function
  8744.         00h (PB) display 32-bit memory specified by command argument
  8745.         01h (PT) display 32-bit instruction(s) specified by command arg
  8746.         02h specify offset to subsequent PB and PT commands
  8747.         03h switch to protected mode
  8748.         DWORD following INT instruction point to map; protected-mode
  8749.               entry point is immediately following the DWORD
  8750.         Return: never
  8751.         Note:    if bit 31 of the map address is set, only a stub was
  8752.               loaded by DOS and DBOS will load the entire program
  8753.         04h specify that subsequent load (AH=03h) should leave program in
  8754.           memory
  8755.         05h release program from memory
  8756.         06h set break point at address and option count from commandline
  8757.         07h resume program execution
  8758.         08h single-step program
  8759.         09h set read/write breakpoint using 386 debug registers
  8760.         0Ah set write breakpoint using 386 debug register
  8761.         0Bh set memory byte to new value
  8762.         0Ch display CPU registers
  8763.         0Dh run until specified program address reached
  8764.         0Fh print trace from program map
  8765.         10h specify an offset using a map symbol
  8766.         14h print memory without any offset
  8767.         18h switch DBOS into/out of test mode (ON/OFF commandline args)
  8768.         1Dh get address of real/protected-mode communication buffer
  8769.         Return: ES:BP -> comm buffer
  8770.         1Eh set real-mode memory size (specify how much real-mode memory
  8771.           to leave free when running FTN77 programs)
  8772.         22h uninstall DBOS
  8773.         24h force DBOS to emulate coprocessor instructions
  8774.         26h set named DBOS switches from commandline
  8775.         27h reset named DBOS switched from commandline
  8776.         2Ah set list of dynamic link libraries to contents of commandline
  8777.           file
  8778.         35h specify that subsequent load (AH=03h) should stop at first
  8779.           instruction
  8780. Return: ???
  8781. Notes:    DBOS supports functions 00h through 50h; many of these functions
  8782.       provide a low-level debugging interface
  8783.     command arguments are read from the calling program's PSP
  8784. SeeAlso: INT 79"DBOS"
  8785. Index:    uninstall;DBOS DOS extender
  8786. --------E-78---------------------------------
  8787. INT 78 - DJGPP GO32.EXE DOS EXTENDER - RELOCATED IRQ0
  8788. Program: GO32.EXE is a DOS extender included as part of the 80386 port of the
  8789.       GNU C/C++ compiler by DJ Delorie and distributed as DJGPP
  8790. Notes:    this vector is overwritten when GO32 starts but is not restored by
  8791.       early versions of the extender
  8792.     the newest versions of GO32 dynamically allocate the vectors used
  8793.       for the relocated IRQs, much as DESQview does (see INT 50"DESQview")
  8794. SeeAlso: INT 08,INT 10/AH=FFh"GO32",INT 79"GO32"
  8795. --------A-78---------------------------------
  8796. INT 78 R - AutoCAD Device Interface - PLOTTER - SEND COMMAND
  8797.     AX = function
  8798.         0001h begin plot
  8799.         BX = file level
  8800.             0000h ASCII file
  8801.             0001h binary file
  8802.             0002h AutoCAD DXB file
  8803.             0003h installed ADI driver
  8804.         0002h end plot (close plotter)
  8805.         0003h move (pen up)
  8806.         BX = new X position
  8807.         CX = new Y position
  8808.         0004h move (pen down)
  8809.         BX = new X position
  8810.         CX = new Y position
  8811.         0005h select pen
  8812.         BX = pen number
  8813.         0006h select drawing speed
  8814.         BX = drawing speed N
  8815.         0007h select line style
  8816.         BX = line style N
  8817.         0008h raise pen
  8818.         0009h abort plot
  8819. Return: AX = 0000h (may be used for driver status in future releases)
  8820. SeeAlso: INT 79"AutoCAD",INT 7A/AX=0001h"AutoCAD",INT 7B/AX=8001h"AutoCAD"
  8821. --------d-78---------------------------------
  8822. INT 78 - ADP-60 IDE controller - ORIGINAL INT 13
  8823. SeeAlso: INT 79"ADP-60"
  8824. --------s-78-------------------------------
  8825. INT 78 - ULTRAMID - API
  8826.     AX = function
  8827.     --- digital functions ---
  8828.         0000h start digital
  8829.         ES:DI -> Sound Structure
  8830.         Return: AX = voice used
  8831.         0001h play next buffer
  8832.         ES:DI -> Sound Structure
  8833.         0002h set panning
  8834.         BX = pan
  8835.         CX = voice
  8836.         0003h set volume
  8837.         BX = volume
  8838.         CX = voice
  8839.         0004h set rate (not yet implemented)
  8840.         0005h pause digital
  8841.         CX = voice
  8842.         0006h restart digital
  8843.         CX = voice
  8844.         0007h stop digital
  8845.         CX = voice
  8846.         0008h get digital position
  8847.         CX = voice
  8848.         Return: AX:DX -> position in PC buffer
  8849.         0009h get voice status (not yet implemented)
  8850.     --- MIDI functions ---
  8851.         000Ah load MIDI patches
  8852.         ES:DI -> MIDI track just after the Mtrk header
  8853.         BX:DX = length of MIDI track
  8854.         000Bh load XMIDI patches
  8855.         ES:DI -> event buffer including the EVNT header
  8856.         000Ch load patch
  8857.         CX = MIDI number of patch
  8858.         000Dh unload patch
  8859.         CX = MIDI number of patch
  8860.         000Eh start sequence
  8861.         000Fh unload all patches
  8862.         0010h MIDI out byte
  8863.         CX = MIDI byte
  8864.         0011h MIDI out string
  8865.         CX = length
  8866.         ES:DI -> string of MIDI data
  8867.         0012h all notes off
  8868.     --- resource functions ---
  8869.         0013h allocate memory
  8870.         BX:DX = size of GUS memory needed
  8871.         Return: AX:DX = address of memory, or 0000:0000 if not avaiable
  8872.         0014h free memory
  8873.         BX:DX = address of memory to be freed
  8874.         0015h uninstall
  8875.         0016h sem enter
  8876.         0017h sem leave
  8877.         0018h add external semaphore
  8878.         BX:DX -> external semaphore
  8879.         0019h clear external semaphore
  8880.         BX:DX -> external semaphore
  8881.         001Ah application start
  8882.         001Bh application end
  8883.     --- v1.12 ---
  8884.         001Ch ???
  8885.         001Dh ???
  8886.         001Eh ???
  8887.         001Fh ???
  8888. Program: UltraMid is a TSR from Advanced Gravis to play MIDI and digital data
  8889.        through the Gravis UltraSound (GUS)
  8890. Range:    INT 78 to INT 7F
  8891. Notes:    the installation check is testing for the signature "ULTRAMID" at
  8892.       offset 0103h in the interrupt handler's segment
  8893. SeeAlso: INT 2F/AX=CD00h"ULTRAMID",INT 7E/AH=00h"SBOS",INT 7E/AX=00FEh"SBOS"
  8894. Index:    uninstall;UltraMID
  8895. --------d-7800-------------------------------
  8896. INT 78 - TARGA.DEV - CMC International SCSI device driver - SET I/O PORT
  8897.     AH = 00h
  8898.     DX = interface board I/O port
  8899. Return: CF set on error
  8900.         AL = error code (see #3035)
  8901. Note:    if this routine is not called, the port is the driver's default
  8902.       (usually 0280h or 0300h)
  8903.     an installation check is performed by TARGA.DEV upon initialization
  8904.       by checking for the string "SCSI" at offset 03h into the interrupt
  8905.       handler
  8906. SeeAlso: AH=01h,AH=02h
  8907. Index:    installation check;TARGA.DEV
  8908.  
  8909. (Table 3035)
  8910. Values for TARGA.DEV error code:
  8911.  00h    illegal command given to SCSI code
  8912.  01h    invalid I/O port specified (must be from 100H to 3F8H, and must be on
  8913.       an 8-port boundary)
  8914.  02h    invalid DMA channel specified (must be from 1 to 3)
  8915.  03h    invalid SCSI board number specified (must be from 0 to 7)
  8916.  04h    error from data register test during self-test
  8917.  05h    SCSI input signals not all 0 when SCSI RST activated
  8918.  06h    SCSI input signals not all 0 before selecting a SCSI device
  8919.  07h    BSY signal is active; SCSI bus is busy
  8920.  08h    SCSI board not selected, BSY signal did not come on in response to
  8921.       raising SEL
  8922.  09h    time-out waiting for status state, signifying end of DMA transfer
  8923. --------E-780000-----------------------------
  8924. INT 78 - HugeRealMode Driver - INSTALLATION CHECK
  8925.     AX = 0000h
  8926. Return: AX = DBCAh if installed
  8927. Program: the HugeRealMode driver was published in the German DOS Extra Nr. 20
  8928.       (1992), and makes a 4G flat address space (for both data and code)
  8929.       available to real-mode DOS programs
  8930. SeeAlso: AX=0001h
  8931. --------E-780001-----------------------------
  8932. INT 78 - HugeRealMode Driver - GET ENTRY POINT
  8933.     AX = 0001h
  8934. Return: ES:BX -> far call entry point (see #3037,#3052)
  8935. SeeAlso: AX=0000h
  8936.  
  8937. (Table 3036)
  8938. Values for HugeRealMode Server error code:
  8939.  00h    successful
  8940.  01h    unknown function
  8941.  02h    A20 disabled
  8942.  03h    A20 enabled
  8943.  04h    memory allocation error
  8944.  05h    memory not fixeable (LOCK)
  8945.  06h    memory not deallocaable
  8946.  07h    memory not moveable (UNLOCK)
  8947.  08h    change in memory allocation size not possible
  8948.  09h    file error (with .XMF-file)
  8949.  0Ah    memory error (with .XMF-file)
  8950.  0Bh    unknown procedure (currently Turbo Pascal unit only)
  8951.  
  8952. (Table 3037)
  8953. Call HugeRealMode Server "Enable A20" function with:
  8954.     AL = 00h
  8955. Return: AX = error code (see #3036)
  8956. Note:    The HugeRealMode Server requires an XMS-driver like HIMEM.SYS loaded
  8957.       before HUGEREAL (for XMS-memory allocation and A20 control). It
  8958.       utilizes some undocumented 386+ features to enable 4G code and data
  8959.       segments (flat memory model) in the CPUs real-mode. It is not
  8960.       compatible with V86-mode (as with most EMM386). For maximum speed
  8961.       and compatibility with DOS it uses a two stage interrupt model
  8962.       (see #3040)
  8963. SeeAlso: #3038,#3039,#3040
  8964.  
  8965. (Table 3038)
  8966. Call HugeRealMode Server "Disable A20" function with:
  8967.     AL = 01h
  8968. Return: AX = error code (see #3036)
  8969. SeeAlso: #3037,#3039
  8970.  
  8971. (Table 3039)
  8972. Call HugeRealMode Server "Query A20 State" function with:
  8973.     AL = 02h
  8974. Return: AX = A20 state (0000h disabled, 0001h enabled)
  8975. SeeAlso: #3037,#3038
  8976.  
  8977. (Table 3040)
  8978. Call HugeRealMode Server "Enable Two-Stage Interrupt Model" function with:
  8979.     AL = 03h
  8980. Return: AX = error code (see #3036)
  8981. Notes:    If the two stage interrupt model is disabled, the IP must stay below
  8982.       1MB, because the high word of EIP is not saved correctly by the
  8983.       standard interrupt management in real mode.  Routines in extended
  8984.       memory may only be called with interrupts disabled (only usable for
  8985.       very short routines).
  8986.     If the two stage interupt model is enabled, these conventions are not
  8987.       required.  The outer (transparent) ISRs save the higher word of EIP
  8988.       in the high word of CR3 (possible modification: in memory, if this
  8989.       is not safe) and then invoke the standard ISRs.
  8990.     Because of this handling, one should use pseudo segmented code even in
  8991.       extended memory (64K blocks located on 64K boundaries) to avoid the
  8992.       misalignment of the saved EIP (in CR3). Another way is to track and
  8993.       realign CR3 each time when jumping over a 64K boundary in extended
  8994.       memory
  8995. SeeAlso: #3037,#3041
  8996.  
  8997. (Table 3041)
  8998. Call HugeRealMode Server "Disable Two-Stage Interrupt Model" function with:
  8999.     AL = 04h
  9000. Return: AX = error code (see #3036)
  9001. SeeAlso: #3037,#3040
  9002.  
  9003. (Table 3042)
  9004. Call HugeRealMode Server "Get Segment Address Of Server-Management Range" with:
  9005.     AL = 05h
  9006. Return: AX = error code (see #3036)
  9007.     ES = segment address
  9008. SeeAlso: #3052
  9009.  
  9010. (Table 3043)
  9011. Call HugeRealMode Server "Allocate Memory" function with:
  9012.     AL = 06h
  9013.     DX = length in KB
  9014. Return: AX = error code (see #3036)
  9015.     DX = handle
  9016.     EBX = start address of allocated block
  9017. SeeAlso: #3044,#3045
  9018.  
  9019. (Table 3044)
  9020. Call HugeRealMode Server "Deallocate Memory" function with:
  9021.     AL = 07h
  9022.     DX = handle
  9023. Return: AX = error code (see #3036)
  9024. SeeAlso: #3043,#3045
  9025.  
  9026. (Table 3045)
  9027. Call HugeRealMode Server "Modify Allocated Memory Size" function with:
  9028.     AL = 08h
  9029.     DX = handle
  9030.     BX = new size in KB
  9031. Return: AX = error code (see #3036)
  9032.     EBX = new address
  9033. SeeAlso: #3043,#3044
  9034.  
  9035. (Table 3046)
  9036. Call HugeRealMode Server "Load .XMF-file" function with:
  9037.     AL = 09h
  9038.     ES:BX -> filename (see #3047)
  9039. Return: AX = error code (see #3036)
  9040.     ECX = target address
  9041. Notes:    memory must be allocated before loading
  9042.     .XMF file format (eXtended Memory executable File format) is supported
  9043.       by the HugeRealMode server for easier handling of XMS-code.
  9044.     The utility CONFXMF converts .OBJ-files (.COM 'tiny' model) to
  9045.       .XMF-format
  9046. SeeAlso: #3043
  9047.  
  9048. Format of .XMF program file header:
  9049. Offset    Size    Description    (Table 3047)
  9050.  00h    DWORD    signature "XMF_"
  9051.  04h    WORD    length of programs code
  9052.  06h    WORD    count of 32bit addresses to relocate
  9053.  08h    WORD    offset to code start (releative to file start) (see #3048)
  9054.  0Ah    WORD    relocation table
  9055. Note:    each word contains a 16bit address, where a relocation has to be
  9056.       performed
  9057. SeeAlso: #3046,#3048
  9058.  
  9059. Format of .XMF-file code header:
  9060. Offset    Size    Description    (Table 3048)
  9061.  00h    WORD    count of exported functions
  9062.  02h  N PWORDs    48bit pointers (16bit segment+32bit offset) to each function
  9063.         (16bit segment is always zero)
  9064.  var        start of program's code
  9065. SeeAlso: #3046,#3047
  9066.  
  9067. (Table 3049)
  9068. Call HugeRealMode Server "Set Segment Limits" function with:
  9069.     AL = 0Ah
  9070.     BL = segment limits (see #3050)
  9071. Return: AX = error code (see #3036)
  9072. SeeAlso: #3042
  9073.  
  9074. Bitfields for HugeRealMode Server segment limits:
  9075. Bit(s)    Description    (Table 3050)
  9076.  7    CS size: 1=4GB, 0=64KB
  9077.  6-5    not used
  9078.  4    SS size: 1=4GB, 0=64KB
  9079.  3    GS size
  9080.  2    FS size
  9081.  1    ES size
  9082.  0    DS size
  9083. SeeAlso: #3049
  9084.  
  9085. (Table 3051)
  9086. Call HugeRealMode Server "Transfer Memory From DOS To XMS" function with:
  9087.     AL = 0Bh
  9088.     ES:SI = source address
  9089.     EDI = target address
  9090.     ECX = length
  9091. Return: AX = error code
  9092. SeeAlso: #3052
  9093.  
  9094. (Table 3052)
  9095. Call HugeRealMode Server "Transfer Memory From XMS To DOS" function with:
  9096.     AL = 0Ch
  9097.     ESI = source address
  9098.     ES:DI = target address
  9099.     ECX = length
  9100. Return: AX = error code
  9101. SeeAlso: #3051
  9102. --------d-7801-------------------------------
  9103. INT 78 - TARGA.DEV - GET I/O PORT
  9104.     AH = 01h
  9105. Return: DX = current interface board I/O port
  9106. SeeAlso: AH=00h,AH=03h"TARGA"
  9107. --------d-7802-------------------------------
  9108. INT 78 - TARGA.DEV - SET DMA CHANNEL
  9109.     AH = 02h
  9110.     AL = interface board DMA channel
  9111. Return: CF set on error
  9112.     AL = error code (see #3035)
  9113. Note:    if this routine is not called, the DMA channel is the driver's default
  9114.       (usually 3)
  9115. SeeAlso: AH=00h,AH=03h"TARGA"
  9116. --------d-7803-------------------------------
  9117. INT 78 - TARGA.DEV - GET DMA CHANNEL
  9118.     AH = 03h
  9119. Return: AL = current interface board DMA channel
  9120. SeeAlso: AH=01h,AH=02h
  9121. --------d-7804-------------------------------
  9122. INT 78 - TARGA.DEV - SET SCSI DEVICE NUMBER
  9123.     AH = 04h
  9124.     AL = SCSI device number
  9125. Return: CF set on error
  9126.     AL = error code (see #3035)
  9127. Note:    if this routine is not called, the device number used is the driver's
  9128.       default (usually 0)
  9129. SeeAlso: AH=02h,AH=05h
  9130. --------d-7805-------------------------------
  9131. INT 78 - TARGA.DEV - GET SCSI DEVICE NUMBER
  9132.     AH = 05h
  9133. Return: AL = current SCSI device number
  9134. SeeAlso: AH=03h"TARGA",AH=04h
  9135. --------d-7806-------------------------------
  9136. INT 78 - TARGA.DEV - SET/CLEAR EARLY RETURN MODE
  9137.     AH = 06h
  9138.     AL = new state
  9139.         00h clear early return mode
  9140.         01h set early return mode
  9141. Note:    if early return mode is set then SCSI will return with no errors
  9142.       when the last DMA transfer is started in a call with AH=13h or AH=14h
  9143.     if this routine is not called, early return mode is cleared
  9144. SeeAlso: AH=13h,AH=14h,AH=15h
  9145. --------d-7808-------------------------------
  9146. INT 78 - TARGA.DEV - INTERFACE BOARD SELF-TEST
  9147.     AH = 08h
  9148. Return: CF set on error
  9149.     AL = error code (see #3035)
  9150. Note:    the SCSI bus is also reset
  9151. SeeAlso: AH=09h
  9152. --------d-7809-------------------------------
  9153. INT 78 - TARGA.DEV - RESET SCSI BUS
  9154.     AH = 09h
  9155. Return: AL = error code if carry set (see #3035)
  9156. SeeAlso: AH=08h
  9157. --------d-7810-------------------------------
  9158. INT 78 - TARGA.DEV - SEND SCSI COMMAND
  9159.     AH = 10h
  9160.     DS:SI -> command bytes (see #3053)
  9161. Return: AH = SCSI status byte
  9162.     CF clear if successful
  9163.         AL = SCSI message byte
  9164.     CF set on error
  9165.         AL = error code (see #3035)
  9166. SeeAlso: AH=11h,INT 21/AX=4403h"ST-01"
  9167.  
  9168. Format of SCSI Command:
  9169. Offset    Size    Description    (Table 3053)
  9170.  00h    BYTE    length of command
  9171.  01h    ???    command bytes
  9172. --------d-7811-------------------------------
  9173. INT 78 - TARGA.DEV - SEND SCSI COMMAND, RECEIVE DATA (PROGRAMMED I/O)
  9174.     AH = 11h
  9175.     DS:SI -> command bytes (see #3054)
  9176.     ES:BX -> data storage area
  9177.     CX = number of data bytes to transfer
  9178. Return: AH = SCSI status byte
  9179.     CF clear if successful
  9180.         AL = SCSI message byte
  9181.     CF set on error
  9182.         AL = error code (see #3035)
  9183. Note:    this command receives data internally one byte at a time
  9184. SeeAlso: AH=10h,AH=13h
  9185.  
  9186. Format of TARGA.DEV SCSI Command:
  9187. Offset    Size    Description    (Table 3054)
  9188.  00h    BYTE    length of command
  9189.  01h    ???    command bytes
  9190. --------d-7812-------------------------------
  9191. INT 78 - TARGA.DEV - SEND SCSI COMMAND AND DATA (PROGRAMMED I/O)
  9192.     AH = 12h
  9193.     DS:SI -> command bytes (see #3055)
  9194.     ES:BX -> data storage area
  9195.     CX = number of data bytes to transfer
  9196. Return: AH = SCSI status byte
  9197.     CF clear if successful
  9198.         AL = SCSI message byte
  9199.     CF set on error
  9200.         AL = error code (see #3035)
  9201. Note:    this command sends data internally one byte at a time
  9202. SeeAlso: AH=14h
  9203.  
  9204. Format of TARGA.DEV SCSI Command:
  9205. Offset    Size    Description    (Table 3055)
  9206.  00h    BYTE    length of command
  9207.  01h    ???    command bytes
  9208. --------d-7813-------------------------------
  9209. INT 78 - TARGA.DEV - SEND SCSI COMMAND, RECEIVE DATA (DMA)
  9210.     AH = 13h
  9211.     DS:SI -> command bytes (see #3056)
  9212.     ES:BX -> data storage area
  9213.     DX:CX = number of data bytes to transfer
  9214. Return: AH = SCSI status byte (if early return mode is clear)
  9215.     CF clear if successful
  9216.         AL = SCSI message byte (if early return mode is clear)
  9217.     CF set on error
  9218.         AL = error code (see #3035)
  9219. Note:    this command receives data using DMA
  9220. SeeAlso: AH=11h,AH=12h
  9221.  
  9222. Format of TARGA.DEV SCSI Command:
  9223. Offset    Size    Description    (Table 3056)
  9224.  00h    BYTE    length of command
  9225.  01h    ???    command bytes
  9226. --------d-7814-------------------------------
  9227. INT 78 - TARGA.DEV - SEND SCSI COMMAND AND DATA (DMA)
  9228.     AH = 14h
  9229.     DS:SI -> command bytes (see #3057)
  9230.     ES:BX -> data storage area
  9231.     DX:CX = number of data bytes to transfer
  9232. Return: AH = SCSI status byte (if early return mode is clear)
  9233.     CF clear if successful
  9234.         AL = SCSI message byte (if early return mode is clear)
  9235.     CF set on error
  9236.         AL = error code (see #3035)
  9237. Note:    this command sends data using DMA
  9238. SeeAlso: AH=12h,AH=13h
  9239.  
  9240. Format of TARGA.DEV SCSI Command:
  9241. Offset    Size    Description    (Table 3057)
  9242.  00h    BYTE    length of command
  9243.  01h    ???    command bytes
  9244. --------d-7815-------------------------------
  9245. INT 78 - TARGA.DEV - FINISH DATA TRANSFER (DMA)
  9246.     AH = 15h
  9247. Return: AH = SCSI status byte
  9248.     CF clear if successful
  9249.         AL = SCSI message byte
  9250.     CF set on error
  9251.         AL = error code (see #3035)
  9252. Note:    if AH=06h was previously called to set the early return mode, this
  9253.       function finishes a command AH=13h or AH=14h which returned before
  9254.       the last DMA transfer was finished
  9255. SeeAlso: AH=06h,AH=13h,AH=14h
  9256. --------!---Section--------------------------
  9257.